noi1805 碎紙機 搜尋

2021-07-09 11:19:54 字數 1070 閱讀 9618

題目分析:

搜尋,從當前節點出發,擴充套件出兩種狀態,就是和下乙個數組合與否, 超過了就剪枝,記錄狀態.,並判重.

先用了類似排列的做法,寫了一上午,9個點過了6個,寫的有的麻煩,懶得再改了.

然後參考了別人的**,結果自己處理邊界的出錯,導致最後乙個數是0的時候出錯,然後花了不少時間才找出來.

#include

#include

#include

using namespace std;

int step[8],ansstep[8],id;//step,儲存分割的陣列,ansstep,儲存答案 

int maxn,cs,re,nac,lac;//re,基數,nac等待分割的數,lac待分割數的長度 ,cs重覆記錄標誌 

char ac[8];

int num[8];//待分割的陣列分成的單個數 

void dfs(int sum,int cf ,int p,int depth )

else if(sums==maxn)cs++;

}return;

} step[depth]=cf;

dfs(sum+cf,num[p+1],p+1,depth+1);

if(p<=lac)dfs(sum,cf*10+num[p+1],p+1,depth);

}int main( )

if(re==nac)

maxn=0;

cs=0;

id=0;

dfs(0,num[1],1,1);

if(maxn==0) printf("error\n");

else if(cs>0) printf("rejected\n");

else

else

if(sum==maxn)cs++;

}return;}

step[depth]=cf;

dfs(sum+cf,num[p+1

],p+1

,depth+1

);dfs

(sum,cf*

10+num[p+1

],p+1

,depth);

}

noi 1805 碎紙機 搜尋

演算法暴力搜尋,dfs 注意 有些情況下可以直接判斷 1.把要 剪碎 的數全都拆成一位數,此時和最小,如果這種情況下和都比目標數大,說明沒有成立的情況,輸出 error 2.要 剪碎 的數本身比目標數還小 或相等 那麼最優的情況就是不進行任何處理,直接輸出兩遍原數。實現 include includ...

嫦娥 有望18 05發射

10月24 道 嫦娥一號 衛星從公升空到環月飛行,北京航天飛行控制中心將全過程實施統一排程 指揮和控制。昨天,本報記者獨家專訪了飛控中心總 工程師 嫦娥一號繞月探測飛行任務北京航天飛控中心技術組組長王也雋。他透露,嫦娥一號 公升空後大約400秒,地面將接收到其從太空傳回的訊號。起飛前半小時授權發射 ...

cogs1805 飛揚的小鳥 dp

題意 一堆管子,問怎麼用最少點選次數穿出去。就是個裸揹包啊 優化都沒有 另外這份 在 uoj 上被 hack 了,有沒有某位 dalao 幫忙找找問題 1 include2 include3 include4 include5 using namespace std 6const int maxn ...