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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

动态规划-背包是否装满

發布時間:2023/12/13 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态规划-背包是否装满 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很簡單但是需要特別注意的,一定不要錯。

背包:
有n 種不同的物品,每個物品有兩個屬性,v體積,c價值,現在給一個體積為 m 的背包,問最多可帶走多少價值的物品。
??????狀態轉移方程??dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+c[i])
dp[i-1][j]表示不放第i件物品的最大價值,dp[i-1][j-v[i]]+c[i]表示放第i件物品的最大價值;[i-1][j-v[i]]這個表示將????前i-1件物品放入空間為??j-v[i] 的背包中的最大價值。為啥要j-v[i]??因為要放第i件物品,所以所剩空間就剩了??????j-v[i].??所以[i-1][j-v[i]]+c[i]就表示放第i件物品的最大價值。

?

(1)背包不一定裝滿。
dp[j]記錄的是前i件物品放入空間為j的背包中的最大價值!!!
要在一開始,讓dp[1001]中的每個值為 0;

(2)背包剛好裝滿 ???

背包剛好裝滿需要注意:

要把f[j]??(表示剛好裝滿的最大價值) 這樣初始化!

f[0]=0; f[1~n]=負無窮-inf

(注意:codeblocks中沒有直接表示無窮的符號,inf是自己定義的)

因為這樣就能是那些能夠恰好裝滿背包的物品的值為正數!而那些不能恰好裝滿背包的物品 的值就為負數。

這樣就容易區分了。

這樣dp(n)(背包最多承重) == inf話,說明裝不滿,裝滿的話 如果要求裝滿最多的價值,直接輸出dp【n】

總結

以上是生活随笔為你收集整理的动态规划-背包是否装满的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。