日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人伊人伊人伊人 | 欧美人与性动交g欧美精器 国产在线视频91 | 免费看黄色漫画 | 日韩免费影院 | 特级淫片裸体免费看冫 | 亚洲精品视频在线观看免费视频 | 午夜不卡在线 | 日韩欧美国产精品综合嫩v 国产小毛片 | 色综合图区| 欧美日韩少妇 | 东北毛片 | 色噜噜狠狠狠综合曰曰曰88av | 丁香视频在线观看 | 亚洲国产精品无码久久久 | 欧美福利精品 | 成人免费视频毛片 | 亚洲精品天堂成人片av在线播放 | 日韩美女久久 | 香蕉av一区二区三区 | a免费视频 | 欧美国产成人在线 | 国产在线播放一区 | 国产私拍 | wwwxx在线观看 | 六月丁香婷婷综合 | 久久免费在线观看 | 美女网站全黄 | 亚洲精品视频一区 | 伊人蕉久影院 | 国产精品一区二区无码对白 | 日本在线免费播放 | 天堂中文资源在线观看 | 国语对白做受按摩的注意事项 | 亚洲国产看片 | 爱情岛论坛成人 | 日本不卡123 | 欧美日韩国产一区二区三区 | 波多野结衣视频免费观看 | 国产精品丝袜一区 | 精品国产乱码久久久久久浪潮 | 欧美激情小视频 | 欧美日韩中 | 尤物视频最新网址 | 天堂在线视频免费观看 | 国产一区二区三区久久 | 日本免费电影一区二区三区 | 国内精品久久久久 | 国产少女免费观看高清 | 污视频在线观看网站 | 国产又爽又黄的激情精品视频 | 草逼免费视频 | 国产一区二区三区高清 | 日韩免费视频一区二区 | 国产精品久久久久久久无码 | 女性裸体不遮胸图片 | www.88av| 内地级a艳片高清免费播放 91在线精品一区二区 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 亚洲AV不卡无码一区二区三区 | 国产69视频在线观看 | 超碰色偷偷| 密臀久久 | 久久国产劲爆∧v内射 | 精品人妻一区二区三区潮喷在线 | 国产成人精品一区二区三区在线 | av青青草原 | 三年中文在线观看中文版 | 国产中文字幕网 | 国产日韩免费视频 | 日本大片黄 | 中国老头性行为xxxx | 少妇人妻偷人精品一区二区 | 新呦u视频一区二区 | 伊人久久精品一区二区三区 | 亚洲人 女学生 打屁股 得到 | 欧美一区二区日韩 | 91红桃视频| 国产成年人视频 | 浪漫樱花动漫在线观看免费 | 黄色网址在线免费播放 | 男人用嘴添女人下身免费视频 | 农村妇女毛片 | 日日摸夜夜添狠狠添久久精品成人 | 欧美婷婷六月丁香综合色 | 黄色91| 黄页网站视频 | 国内一区二区三区 | 一本一道av| 国产午夜精品久久久久 | 国产又白又嫩又爽又黄 | 91秘密入口 | 午夜老司机免费视频 | 青青草原伊人 | 国产青草 | 男女啊啊啊视频 | 乱人伦xxxx国语对白 | 国产又粗又猛又爽又黄av | 色撸撸av| 四虎国产在线观看 |