#include<bits/stdc++.h>
using namespace std;
int max(int a,int b)
{
if(a>b)
return a;
else return b;
}
int main()
{
int a,b;
cin>>a>>b;
int value[35];
int f[35][35];//f[i][j]i表示第i件物品,j表示体积为j;
memset(f,0,sizeof(f));
for(int i=1;i<=b;i++)
cin>>value[i];
for(int i=1;i<=b;i++)
{
for(int j=1;j<=a;j++)
{
if(j>=value[i])
f[i][j]=max(f[i-1][j],(f[i-1][j-value[i]]+value[i]));
else f[i][j]=f[i-1][j];
}
}
cout<<a-f[b][a];
return 0;
}
背包
最新推荐文章于 2024-07-13 19:27:27 发布