P1049 [NOIP2001 普及组] 装箱问题
01背包简化版,这里的w[i]
就等价于c[i]
,稍作修改即可
#include <bits/stdc++.h>
using namespace::std;
int V, N;
int f[20005], c[35];
void ZeroOnePack()
{
for(int i = 0; i <= V; ++i)
f[i] = 0;
for(int i = 1; i <= N; ++i)
for(int v = V; c[i] <= v; --v)
f[v] = max(f[v], f[v - c[i]] + c[i]);
}
int main()
{
cin >> V;
cin >> N;
for(int i = 1; i <= N; ++i)
cin >> c[i];
ZeroOnePack();
cout << V - f[V];
return 0;
}
f[V];
return 0;
}