動態規劃 0 1揹包

2021-09-08 21:18:36 字數 862 閱讀 8556

問題描述

有乙個箱子容量為v(正整數,0<=v<=20000),同時有n個物品(0<n<=30),每個物品有乙個體積(正整數)。

要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。

輸入格式

第一行為乙個整數,表示箱子容量;

第二行為乙個整數,表示有n個物品;

接下來n行,每行乙個整數表示這n個物品的各自體積。

輸出格式

乙個整數,表示箱子剩餘空間。

樣例輸入246

83127

97樣例輸出

0分析:dp[i][j]表示前i件物品選則部分裝入體積為j的揹包後,揹包總共所佔的最大體積,

一共有n件物品,那麼dp[n][v]就是前n件物品選擇部分裝入體積為v的揹包後,揹包總共占有的最大體積

1.當當前輸入的物品體積大於揹包容量,則不裝入揹包,dp[i][j] = dp[i-1][j];

2.當當前輸入的物品體積小於等於揹包容量,考慮裝或者不裝兩種狀態,取體積最大的那個:dp[i][j] = max(dp[i-1][j], dp[i-1][j-t] + t);

#includeusing namespace std;

int dp[31][20001];

int main()

} cout<<(v-dp[n][v]);

return 0;

}

動態規劃 01揹包

最優二叉查詢樹.cpp 定義控制台應用程式的入口點。01揹包問題。include stdafx.h include include define n 3 the number of real node define m 10 using namespace std int tmain int arg...

01揹包動態規劃

0 1揹包 問題描述 乙個旅行者有乙個最多能用 m公斤的揹包,現在有 n件物品,它們的重量 分別是w1,w2 wn,它們的價值分別為 c1,c2,cn.若每種物品只有一 件求旅行者能獲得最大總價值。輸入格式 w 第一行 兩個整數,m 揹包容量,m 200 和n 物品數量,n 30 w第2.n 1 行...

0 1揹包(動態規劃)

題意 有n件物品和乙個容量為v的揹包。第i件物品的體積是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。基本思路 這是最基礎的揹包問題,特點是 每種物品僅有一件,可以選擇放或不放。用子問題定義狀態 即f i v 表示前i件物品恰放入乙個容量為v的揹包可以獲得的最大價值。則其狀態轉移方程...