1.题目:
2.这是一个简单的01背包;直接套板子就行!!
3.代码:
#include<iostream>
#include<algorithm>
using namespace std;
const int N=200005;
int v,n,a[35];//v背包最大容量;n物品数量 ,a物品的体积
int b[35][N];//背包装下的体积
int main()
{
cin>>v>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);//排序,不排也可;
for(int j=1;j<=n;j++){
for(int k=0;k<=v;k++){
b[j][k]=b[j-1][k];
if(k>=a[j]){
b[j][k]=max(b[j][k],b[j-1][k-a[j]]+a[j]);//状态转移方程
}
}
}
//算到最后b[n][v]是装下的最大体积
cout<<v-b[n][v];
return 0;
}