#include<iostream>
using namespace std;
#include<cstdio>
#include<cstring>
#include<algorithm>
int c[1005],v[1005],dp[1005];
int main()
{
int n,m;
while(cin>>n,n)
{
memset(c,0,sizeof(c));
memset(dp,0,sizeof(dp));
int i,j;
for(i=0;i<n;i++)
cin>>c[i];
sort(c,c+n);
cin>>m;
if(m<5)
{
printf("%d\n",m);
continue;
}
m-=5;
for(i=0;i<n-1;i++)
{
for(j=m;j>=c[i];j--)
{
dp[j]=max(dp[j],dp[j-c[i]]+c[i]);
}
//cout<<dp[i]<<' ';
}
// cout<<m<<' '<<dp[m]<<' '<<c[n]<<endl;
cout<<m+5-dp[m]-c[n-1]<<endl;
}
return 0;
}
hdu 1546 01背包
最新推荐文章于 2020-07-13 22:09:29 发布