有乙個箱子容量為vv(正整數,0 \le v \le 200000≤v≤20000),同時有nn個物品(0要求nn個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。
輸入格式:
11個整數,表示箱子容量
11個整數,表示有nn個物品
接下來nn行,分別表示這nn個物品的各自體積
輸出格式:
11個整數,表示箱子剩餘空間。
輸入樣例#1:複製
2468輸出樣例#1:複製31279
7
0
#include#includeusing namespace std;
int n, m, arr[32], res[32];
int ans = 999999;//答案
void dfs(int mark, int rest)//mark表示當前的編號,rest表示當前剩餘的量
int main()
dfs(1, m);
cout << ans << endl;
system("pause");
return 0;
}
我們要求最小的剩餘量就是求最大的可以裝下的量
dp[j]就是表示j容量下最大可以裝的量
還是老樣子,兩種:裝與不裝
裝就是
dp[j - arr[i]]+arr[i]
不裝就是:
dp[j]
所以**:
#include#includeusing namespace std;
int m, n;
int arr[32], dp[20003];
int main()
for (int i = 1; i <= n; i++) }
cout << m-dp[m] << endl;
system("pause");
return 0;
}
裝箱問題 DP
裝箱問題 pack.pas c cpp 問題描述 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30 每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入檔案 第一 行乙個正整數v表示箱子的容量,第二行乙個正整數n表示物品個數,接下來...
DP 裝箱問題
有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30 每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。sample input 第一行 乙個整數,表示箱子容量 第二行 乙個整數,表示有n個物品 接下來n行,分別表示這n 個物品的各自體積...
NOIP 2001 裝箱問題 DP
題目描述 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0輸入 每個測試檔案只包含一組測試資料,每組輸入的第一行為乙個整數v 0 v 20000 表示箱子的容量。第二行輸入乙個整數n 0輸出 對於每組輸入資料,輸出乙個整數,表示箱子剩餘空間。分析 01揹包的變形,將每個物品的體積同...