實(shí)現(xiàn)背包問(wèn)題
package problem
1. 問(wèn)題描述
假設(shè)有一個(gè)能裝入總體積為T的背包和n件體積分別為w1 , w2 , … , wn 的物品,能否從n件物品中挑選若干件恰好裝滿背包,即使w1 +w2 + … + wn=T,要求找出所有滿足上述條件的解。例如:當(dāng)T=10,各件物品的體積{1,8,4,3,5,2}時(shí),可找到下列4組解: (1,4,3,2)、(1,4,5)、(8,2)、(3,5,2)。
2. 基本要求
讀入T、n、w1 , w2 , … , wn
3.提示:
可利用遞歸方法:若選中w1 則問(wèn)題變成在w2 , … , wn 中挑選若干件使得其重量之和為T- w1 ,若不選中w1,則問(wèn)題變成在w2 , … , wn 中挑選若干件使得其重量之和為T 。依次類推。
也可利用回溯法的設(shè)計(jì)思想來(lái)解決背包問(wèn)題。首先將物品排成一列,然后順序選取物品裝入背包,假設(shè)已選取了前i 件物品之后背包還沒(méi)有裝滿,則繼續(xù)選取第i+1件物品,若該件物品“太大”不能裝入,則棄之而繼續(xù)選取下一件,直至背包裝滿為止。但如果在剩余的物品中找不到合適的物品以填滿背包,則說(shuō)明“剛剛”裝入背包的那件物品“不合適”,應(yīng)將它取出“棄之一邊”,繼續(xù)再?gòu)摹八蟆钡奈锲分羞x取,如此重復(fù),,直至求得滿足條件的解,或者無(wú)解。
注:沒(méi)壓縮密碼
標(biāo)簽:
package
problem
體積
w2
上傳時(shí)間:
2014-01-18
上傳用戶:yxgi5
huffman完整源代碼C語(yǔ)言實(shí)現(xiàn),有本人超級(jí)詳細(xì)解釋(看不懂你去跳樓吧)
算法設(shè)計(jì):
1、對(duì)給定的n個(gè)權(quán)值{W1,w2,W3,...,Wi,...,Wn}構(gòu)成n棵二叉樹的初始集合F={T1,T2,T3,...,Ti,...,Tn},其中每棵二叉樹Ti中只有一個(gè)權(quán)值為Wi的根結(jié)點(diǎn),它的左右子樹均為空。(為方便在計(jì)算機(jī)上實(shí)現(xiàn)算法,一般還要求以Ti的權(quán)值Wi的升序排列。)
2、在F中選取兩棵根結(jié)點(diǎn)權(quán)值最小的樹作為新構(gòu)造的二叉樹的左右子樹,新二叉樹的根結(jié)點(diǎn)的權(quán)值為其左右子樹的根結(jié)點(diǎn)的權(quán)值之和。
3、從F中刪除這兩棵樹,并把這棵新的二叉樹同樣以升序排列加入到集合F中。
4、重復(fù)二和三兩步,直到集合F中只有一棵二叉樹為止。
標(biāo)簽:
huffman
C語(yǔ)言
源代碼
上傳時(shí)間:
2013-12-29
上傳用戶:ouyangtongze