1 #include"cstdio" 2 #include"cstring" 3 #include"algorithm" 4 using namespace std; 5 int n;//菜的数量 6 int greens[1000+5]; 7 int m;//卡上余额 8 int main(){ 9 while(scanf("%d",&n)==1&&n){//输入菜的数量 10 int dp[1000+5]; 11 memset(dp,0,sizeof(dp)); 12 for(int i=1;i<=n;i++) 13 scanf("%d",&greens[i]); 14 scanf("%d",&m); 15 if(m<5){//低于五元直接输出m 16 printf("%d\n",m); 17 continue; 18 } 19 sort(greens+1,greens+n+1); 20 int maxn=greens[n]; 21 for(int i=1;i<n;i++) 22 for(int j=m-5;j>=greens[i];j--) 23 dp[j]=max(dp[j],dp[j-greens[i]]+greens[i]); 24 printf("%d\n",m-dp[m-5]-maxn); 25 } 26 return 0; 27 }
时间: 2024-12-25 14:18:26