日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

01背包图解

發(fā)布時(shí)間:2025/4/14 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 01背包图解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

01背包問題描述:一個(gè)旅行者有一個(gè)最多能用M公斤的背包,現(xiàn)在有N件物品,

它們的重量分別是W1,W2,...,Wn,

它們的價(jià)值分別為P1,P2,...,Pn.

若每種物品只有一件求旅行者能獲得最大總價(jià)值。

?

方式一:遍歷M*N的數(shù)組,對應(yīng)下圖包的總?cè)萘縈=20,物品種類數(shù)N=5

代碼如下:

const int nRes=5;//5種物品

int nResWeight[nRes+1]={0,5,3,4,7,8};//每種物品對應(yīng)重量

int nResValue[nRes+1]={0,14,6,9,18,20};//每種物品對應(yīng)價(jià)值

const int nTotleW=20;//背包容量為20

int nValueTable[nRes+1][nTotleW+1]={0};//動態(tài)價(jià)值表,每一項(xiàng)對應(yīng)包當(dāng)前所能裝入的最優(yōu)值

int KitBag()

{

for(int i=1;i<=nRes;i++)

for(int j=1;j<=nTotleW;j++)//包容量逐漸遞增

{

if(j>=nResWeight[i]) //當(dāng)包容量大于等于當(dāng)前物品重時(shí)

{//如果裝入當(dāng)前物品所能達(dá)最大價(jià)值>不裝當(dāng)前物品,包選裝前面物品所能獲得的最大價(jià)值

//裝入當(dāng)前物品所能達(dá)最大價(jià)值=當(dāng)前物品價(jià)值+當(dāng)前包容量j扣除當(dāng)前物品重量后,剩余的容量所能裝入的最大價(jià)值。

//對照上表,當(dāng)遍歷到i=2,j=8時(shí),nValueTable[i-1][j-nResWeight[i]]=nValueTable[1][5]=14,滿足條件就裝入物品。

?if(nResValue[i]+nValueTable[i-1][j-nResWeight[i]]>nValueTable[i-1][j])

nValueTable[i][j]=nResValue[i]+nValueTable[i-1][j-nResWeight[i]];//當(dāng)前物品裝入包.

?else//當(dāng)前物品不裝入包,當(dāng)前包容量下的最大價(jià)值仍然是原來的價(jià)值

nValueTable[i][j]=nValueTable[i-1][j];

}

else//包容量不足以裝入當(dāng)前物品時(shí),沿用原來的包容量最大價(jià)值

nValueTable[i][j]=nValueTable[i-1][j];

??}

cout<<"最大值為:"<<nValueTable[nRes][nTotleW];

return nValueTable[nRes][nTotleW];

?};

方式二:采用遞歸方式,遍歷二叉樹,并通過映射表來剪枝。

代碼如下:

int RecursionBag(int nR,int nW)//傳入資源數(shù),包容量

{

if(nR==0||nW==0){

return 0;

}

if(nValueTable[nR][nW]!=0){

//當(dāng)前節(jié)點(diǎn)是已訪問過的節(jié)點(diǎn),直接返回存儲的最優(yōu)值

return nValueTable[nR][nW];

}

if(nW>=nResWeight[nR])//包容量大于等于當(dāng)前物品重

{//獲得物品放入和不放入兩種情況中的價(jià)值最大者

nValueTable[nR][nW]=max(nResValue[nR]+RecursionBag(nR-1,nW-nResWeight[nR]),//物品入包后的價(jià)值

RecursionBag(nR-1,nW));//物品不入包的最大價(jià)值

}

else//包容量不足以放入當(dāng)前物品

nValueTable[nR][nW]=RecursionBag(nR-1,nW);

return nValueTable[nR][nW];

}

對比兩種方式可知,第二種方式遍歷的數(shù)據(jù)量為黃色標(biāo)注結(jié)點(diǎn),要小于第一種方式的數(shù)據(jù)訪問量。

不過當(dāng)節(jié)點(diǎn)深度上千后,如果包容量遠(yuǎn)小2^n,比如為 10000,這時(shí)前一種方法要快得多。估計(jì)這時(shí),遞歸對訪問過的節(jié)點(diǎn)雖然不再訪問它的子節(jié)點(diǎn),但是這樣重復(fù)訪問到的父節(jié)點(diǎn)數(shù)量過于龐大。


總結(jié)

以上是生活随笔為你收集整理的01背包图解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本少妇裸体做爰高潮片 | 人人艹在线观看 | 亚洲一二三四 | 先锋资源中文字幕 | 黄色一级片在线播放 | 春闺艳妇(h)高h产乳 | 久久国产精品视频 | 18成人免费观看网站下载 | 天天干天天操天天拍 | 亚洲欧洲日本一区二区三区 | 国产亚洲精品自拍 | 色综合图片 | 久久精品3 | 超碰人人91 | 色呦呦日韩精品 | 干干操操 | 毛片aaaaaa| 久操久操久操 | 亚洲激情网站 | 男女黄床上色视频免费的软件 | 免费爱爱视频 | 欧美巨乳在线观看 | 福利一区三区 | 37p粉嫩大胆色噜噜噜 | 国产视频一区二区三区在线播放 | 亚洲视频在线观看 | 亚洲欧洲在线播放 | 欧美色图校园春色 | 人妻丰满熟妇av无码区hd | 91久久精品国产91久久 | 日韩在线一区二区三区 | 国产一区二区三区乱码 | 免费看操片| 国产清纯白嫩初高中在线观看性色 | 国产福利91精品一区二区三区 | 插入综合网 | 免费亚洲视频 | 在线观看福利片 | 精品国产一区在线观看 | 成人黄色短片 | 污网站免费在线观看 | 国产精品无码免费专区午夜 | 亚洲一区h | 中文字幕乱码在线观看 | 亚洲插 | av一区不卡 | 男女草比视频 | 一区二区三区精品在线观看 | 伊人五月天 | 鲁鲁在线| 国产区在线 | 国产主播福利在线 | 久久99国产精品一区 | 国产专区一区 | 午夜视频在线瓜伦 | 亚洲日本一区二区三区 | 黄色在线观看国产 | 国产女人18毛片水真多1 | 国产一级自拍视频 | 在线亚洲成人 | 自拍偷拍小视频 | 成人视品 | 精品少妇一区二区三区 | 国产1区2区3区4区 | 日本激情视频一区二区三区 | 97超碰中文字幕 | 手机看片国产日韩 | 亚洲制服一区二区 | 国产亚洲精品成人av久久ww | 成人伊人| 亚洲一区二区三区影院 | 国产在线国偷精品免费看 | 99久久久无码国产精品性青椒 | 午夜影院在线免费观看 | 强伦人妻一区二区三区视频18 | 亚洲av无码一区二区二三区 | 亚洲一区二区中文字幕 | 法国伦理少妇愉情 | 国产第九页 | 九九亚洲 | 黄色片视频免费 | 国产做爰高潮呻吟视频 | 少妇一级淫免费播放 | 黄色免费播放 | 免费成人在线电影 | 91久久电影 | 亚洲成人第一 | 大乳护士喂奶hd | 欧美一区二区三区在线观看 | 18视频网站在线观看 | 欧美黄色影院 | 日韩欧美激情视频 | 久久99精品国产.久久久久久 | 自拍视频在线观看 | 强行糟蹋人妻hd中文字幕 | 欧美大尺度做爰啪啪床戏明星 | 香蕉黄色片 | 欧美性猛交xxxx免费看 | 亚洲欧美另类图片 |