如果输入的钱数money小于5 原样输出
否则money-=5
对数据从小到大排序,
用ans[i] 记录i元钱最多购买多少钱商品
输出money-ans[money](剩余多少钱没有用)+5-花费最多的商品
#include<bits/stdc++.h>
using namespace std;
int n,m;
int main()
{
//freopen("C:\\Users\\Lenovo\\Desktop\\input.txt","r",stdin);
int a,b,k=0,money;
while (~scanf("%d",&n)&&n)
{
int arr[1002];
for(int i=0;i<n;i++)scanf("%d",&arr[i]);
scanf("%d",&money);
int i,j;
if(money<5)printf("%d\n",money);
else
{
money-=5;
sort(arr,arr+n);
int temp=5-arr[n-1];
int ans[1000]={0};
for(int i=0;i<n-1;i++)
{
for(int j=money;j>=arr[i];j--)
ans[j]=max(ans[j-arr[i]]+arr[i],ans[j]);
}
temp=temp+money-ans[money];
printf("%d\n",temp);
}
}
return 0;
}