深搜之拯救少林神棍_第1頁
深搜之拯救少林神棍_第2頁
深搜之拯救少林神棍_第3頁
深搜之拯救少林神棍_第4頁
深搜之拯救少林神棍_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

ACM/ICPC競賽訓(xùn)信息 1 2 成N節(jié)長度各異的小木棒3的他想知道這些棍子最短可能有4棍子長度56真的要每個(gè)長度都試嗎7 第i根的拼法,重拼第i根直至有可 第1根棍子的拼8本題的“狀態(tài)”是什么M:(N,(0,9(R,(R-1,M-拼接一節(jié)長度為(R,(R-1,M-(R-1,M-(R,拆掉一節(jié)長度為(R-1,M-(R,以N=10,L=57為例(10節(jié)木棒,假設(shè)棍子長度是

初始 棍子以N=10,L=57為例(10節(jié)木棒,假設(shè)棍子長度是

初始 棍子初始初始(10節(jié)木棒,假設(shè)棍子長度是棍子初始初始(10節(jié)木棒,假設(shè)棍子長度是棍子初始初始(10節(jié)木棒,假設(shè)棍子長度是棍子boolDfs(intR,intM表示:當(dāng)前有R根未用木棒,而且當(dāng)前正在拼的那根棍子比假定的棍子長度還少M(fèi)求在這Dfs的基本遞推關(guān)boolDfs(intR,intM){if(R==0&&M==Dfs(R–1,M-return}#include<iostream>#include<stdlib.h>#include<vector>#include<algorithm>usingnamespacestd;intN;intvector<int>intanUsed[65];//是否用過的標(biāo)記inti,j,k;intDfs(intR,intint{while(1)cin>>N;if(N==0)intnTotalLen=0;for(inti=0;i<N;i++){intn;cin>>n;}for(L=anLength[0];L<=nTotalLen/2;L++){if(nTotalLen%L)if(Dfs(N,L)){cout<<L<<endl;}}if(L>nTotalLen/2cout<<nTotalLen<<}//whilereturn}intDfs(intR,intM)//M表示當(dāng)前正在拼的棍子和L比還缺的長if(R==0&&M==0returnifM0//一根剛剛拼ML;//for(inti=0;i<N;i++)if(!anUsed[i]&&anLength[i]<=M){anUsed[i]=1;if(Dfs(R-M-anLength[i]))returntrue;anUsed[i]0;//說明本次不能用第i//第i根以}}return 有100多節(jié)木棒呢

第一種剪枝方案如果某次拼接選擇長度為S的木棒,導(dǎo)致最終過所有長度為S的木棒第二種剪枝方案功,那么就要第i-1根棍子的拼法如果不存在第i-1根棍子,那么就本次假設(shè)的若棍子i如下拼法導(dǎo)致最后不能成功木棒 木棒 木棒可以考慮把木棒2,3換掉重拼棍子i,但是把2,3都去第二種剪枝方案為什么替換第i根棍子的第一根木棒是沒用的,棍子木棒木棒棍子木棒木棒木棒以N=10,L=57為例(10節(jié)木棒,假設(shè)棍子長度是

初始棍子以N=10,L=57為例(10節(jié)木棒,假設(shè)棍子長度是

初始 棍子初始初始(10節(jié)木棒,假設(shè)棍子長度是棍子初始初始(10節(jié)木棒,假設(shè)棍子長度是棍子intDfs(intR,intM)//M表示當(dāng)前正在拼的棍子和L比還if(R==0&&M==0returnif(M0//一根剛剛拼ML;//開始拼新的一for(inti=0;i<N;i++)if(!anUsed[i]&&anLength[i]<=M){if(i>0){if(anUsed[i-1]==&&anLength[i]anLength[i-1])continue;//剪枝1}anUsed[i]=ifDfs(R M-anLength[i]))returntrue;else

//第i根以后還有if(M==returnfalse;//剪枝}}}return}第三種剪枝方案木棒木棒3第三種剪枝方案木棒 木棒

木棒 第四種剪枝方案木棒木棒木棒3比木棒2長,這種情況的出現(xiàn)是一種浪費(fèi)。因?yàn)橐沁@樣往下能成功,那么2,3對調(diào)的拼法肯定也第四種剪枝方案木棒木棒intDfs(intR,int//M表示當(dāng)前正在拼的棍子和L比還缺的長{if(R==0&&M==0returnifM0//一根剛剛拼ML;//開始拼新的一intnStartNo=0;ifML//剪枝4nStartNo=nLastStickNo+for(inti=nStartNo;i<S;i++)if(!anUsed[i]&&anLength[i]<=M){if(i>0){if(anUsed[i-1]==&&anLength[ianLength[i-1])continue;//剪枝1}anUsed[i]=1;nLastStickNo= if(Dfs(R-M-anLength[i]))returntrue;else

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論