內(nèi)容教案成果1_第1頁
內(nèi)容教案成果1_第2頁
內(nèi)容教案成果1_第3頁
內(nèi)容教案成果1_第4頁
內(nèi)容教案成果1_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、問題描述SticksDescription George took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to the original state, but he forgot how many sticks he had originally and how long they were originally. 解題要求1. Time Limit, Memory Limit2. In

2、put3.OutputTime Limit:5S Memory Limit:10000KInputThe input file contains blocks of 2 lines. The first line contains the number of sticks parts after cutting. The second line contains the lengths of those parts separated by the space. The last line of the file contains zero.OutputThe output file cont

3、ains the smallest possible length of original sticks, one per line.基本思路從小到大,逐個嘗試可能的長度。設(shè)已知的n根短棍的長度分別是:l1,l2,ln現(xiàn)在的問題就是:要判斷這n根短棍是否可以組成m根長為length的長棍。這題和Dividing(1014)那題很像,從題意上可以把Dividing看成是此題的簡化版本。然而仔細分析這兩題有很大不同,因此解法也是大相徑庭的。Dividing那題的數(shù)據(jù)總量可以達到20000,直接的深度優(yōu)先搜索是很難奏效的,所以我們的想法是如何有效的減少數(shù)據(jù)總量。而對于此題來說,雖然我不知道實際測試數(shù)

4、據(jù)的最大的數(shù)據(jù)量(sticks的總數(shù))是多少,但是我只用了一個長為100的數(shù)組保存也沒有越界。說明總的數(shù)據(jù)量不超過100(注:要解這題要我覺得要使用深度優(yōu)先搜索,對于深度優(yōu)先搜索來說100已經(jīng)是很大的數(shù)了)。具體思路對于這個問題,可以有2種不同的解決方法:1.逐個使用l1,l2,ln來填充長棍。2.逐個填充長棍,填完一根長棍,再填下一根。無論是哪一種解題思路,我們都可以“感覺到”如果有如下的關(guān)系成立l1=l2=ln 那么對于解題是十分有利的。事實也是如此,在此種情況下將會比較高效的排除不可能的情況。此題的實際測試結(jié)果也是如此,如果讀入數(shù)據(jù)后沒有排序,我所見過每種算法都會超時。第一種思路的程序框

5、架bool solve(k)/填第k根短棍 for(i=0;im;i+)if(lk+第i根長棍已填的部分 m) ok = 1; printf(%dn, length); return; int i; for (i = 1;i = n;i+) if (!usedi) break; usedi = 1; search(x,sticki,i);/此步和我的第一個優(yōu)化類似 usedi = 0;void search(int num,int now,int next) if (ok) return; if (now = length) solve(num + 1); return; for (int i = next + 1;i = n;i+) if (!usedi) if(sticki + now = len) usedi = 1;search(num,now + sticki,i);usedi = 0; if (ok) return; /此步和我的第三個優(yōu)化類似 if (sticki = length - now) return; 以上的程序段來自與lowai,運行時間是20ms。在這段程序中也使用了一些優(yōu)化,經(jīng)過實驗,在不加入其中任何一個優(yōu)化的情況下,計算結(jié)果都會超時。總結(jié)1.深度優(yōu)先搜索的順序

溫馨提示

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

評論

0/150

提交評論