裝箱問題 dp 遞迴

2021-09-11 02:26:05 字數 1100 閱讀 2187

有乙個箱子容量為vv(正整數,0 \le v \le 200000≤v≤20000),同時有nn個物品(0要求nn個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。

輸入格式:

11個整數,表示箱子容量

11個整數,表示有nn個物品

接下來nn行,分別表示這nn個物品的各自體積

輸出格式:

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

輸入樣例#1:複製

2468

31279

7

輸出樣例#1:複製

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揹包的變形,將每個物品的體積同...