很有趣的一句话:电子科大本部食堂的饭卡有一种很诡异的设计>>>>>>
#include<stdio.h>
#include<string.h>
int main()
{
int t,n,i,j,m,take,max,f[1005],p[1005];
while (scanf("%d",&n),n)
{ for (max=0,i=0; i<n; i++)
{ scanf("%d",&p[i]);
if (p[max]<p[i]) max=i;
}
scanf("%d",&m);
if (m<5) { printf("%d\n",m);continue; }
t=p[max];p[max]=p[0];p[0]=t;
take=m-5;
memset(f,0,sizeof(f));
for (i=1; i<n; i++)
for (j=take; j>=p[i]; j--)
{
t=f[j-p[i]]+p[i];
if (t<=take && t>f[j]) f[j]=t;
}
printf("%d\n",m-f[take]-p[0]);
}
return 0;
}
--------------------
cost[i] or value[i] 都能作为包的对象。