#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
int i, j, temp, v[1005], n, m, dp[1005];
while(~scanf("%d", &n), n)
{
memset(dp, 0, sizeof(dp));
for(i=0;i<n;i++)
scanf("%d", &v[i]);
sort(v, v+n);
scanf("%d", &m);
if(m<5)
{
printf("%d\n", m);
continue ;
}
m-=5;
for(i=0;i<n-1;i++)
for(j=m;j>=v[i];j--)
dp[j]=max(dp[j], dp[j-v[i]]+v[i]);
printf("%d\n", m+5-dp[m]-v[n-1]);
}
return 0;
}
HDU 2546 饭卡……(01背包+条件)
最新推荐文章于 2019-05-03 22:24:49 发布