題目內容:
題目描述
有乙個箱子容量為v(正整數,0<=v<=20000),同時有n個物品(0<n<=30,每個物品有乙個體積(正整數)。
要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。
輸入輸出格式
輸入格式:
乙個整數,表示箱子容量
乙個整數,表示有n個物品
接下來n行,分別表示這n 個物品的各自體積
輸出格式:
乙個整數,表示箱子剩餘空間。
樣例:輸入246
83127
97輸出:思路:
非常標準的動態規劃01揹包問題,將它的重量看作它的價值,求剩餘最小量就是能裝的最大量
求n個物品中,任取若干個裝入箱內,總價值最大。
對於每乙個物體,都有兩種狀態:裝 與 不裝
那麼,對於任意重量m的最大價值 dp[m] = max(dp[ m - w[i] ] + w[i],dp[m] )(w為重量(即價值))
其中,dp [ m - w[i] ] 指在裝了物品i後,箱子的剩餘容量能裝的最大重量
dp ( m - w[i] ) + w[i] 指在在裝了物品i後,箱子能裝的最大重量
dp[m]表示當前的價值
max(dp[m],dp[m-w[i]]+w[i]);表示判斷加上物體價值大還是不加物體價值大,保留價值大的那乙個。
見**
#includeusing namespace std;
int dp[200010];//箱子的重量
int w[40];//每件物體的重量
int main()
P1049 裝箱問題
題目描述 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30,每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入輸出格式 輸入格式 乙個整數,表示箱子容量 乙個整數,表示有n個物品 接下來n行,分別表示這n 個物品的各自體積 輸出格...
P1049 裝箱問題
題目描述 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30,每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入輸出格式 輸入格式 乙個整數,表示箱子容量 乙個整數,表示有n個物品 接下來n行,分別表示這n 個物品的各自體積 輸出格...
P1049 裝箱問題
有乙個箱子的容量為v,有n個物品,每個物品都有乙個體積,要求在這n個物品中使箱子剩餘的體積最小。2468 31279 70o nm 連續寫了4題關於動態規劃的題目,但毫不例外的都是01揹包,能不能再簡單一點,我也是沒看出有多少改變。跟採藥相比也就少了個每個物品的價值,但物品的體積也可以看作是它的價值...