#include<bits/stdc++.h>
using namespace std;
const int N = 20010;
int v, n;
int a[N];
int f[N][N];
int main()
{
cin >> v >> n;//读入背包体积与物品个数
for(int i = 1; i <= n; i ++) cin >> a[i];//读入状态
/*
01背包
*/
for(int i = 1; i <= n; i ++)
for(int j = 0; j <= v; j ++)
{
f[i][j] = f[i - 1][j];
if(a[i] <= j) f[i][j] = max(f[i][j], f[i - 1][j - a[i]] + a[i]);//取当前这个物品
}
cout << v - f[n][v] << endl;//输出背包的总体积减去装下的体积
return 0;
}
装箱问题(4月5日)
最新推荐文章于 2024-10-09 10:07:13 发布