装箱问题(boxes) 简单动规背包问题

题目
装箱问题(boxes)

描述
有一个箱子容量为 v(正整数,0≤v≤20000),同时有 n 个物品(0

输入格式
箱子的容量 v
物品数 n
接下来 n 行,分别表示这 n 个物品的体积

输出格式
箱子剩余空间

输入样例
24
6
8
3
12
7
9
7

输出样例
0

题目思路
简单的背包问题

附AC代码

#include 
#include 
#include 
#include 
#include 
using namespace std;
int main(){
	int v , n , w[31] = {},dp[20001] = {};
	cin >> v >> n;
	for(int i = 1;i <= n;i ++ ){
	 	cin >> w[i];
	}
	for(int i = 1;i <= n;i ++ ){
		for(int j = v; j >= 1;j -- ){
			if(j >= w[i]){
				dp[j] = max(dp[j - w[i]] + w[i],dp[j]);
			}
		}
	}
	cout << v - dp[v] << endl; 
	return 0;
}

你可能感兴趣的:(c++)