#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int dp[1010],a[1010]; int main(void) { int n,m,i,j,k,Max; while(scanf("%d",&n),n) { Max=0; for(i=1;i<=n;i++) { scanf("%d",&a[i]); if(a[i]>Max) { k=i; Max=a[i]; } } scanf("%d",&m); if(m<5) printf("%d\n",m); else { memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) for(j=m;j>=a[i];j--) if(i!=k) dp[j]=max(dp[j],dp[j-a[i]]+a[i]); printf("%d\n",m-dp[m-5]-Max); } } return 0; }
转载于:https://www.cnblogs.com/YogurtShen/archive/2012/08/31/2664993.html