您的位置:首页 > 其它

01背包问题——饭卡

2016-02-25 20:05 316 查看
HDU原题

很有趣的一句话:电子科大本部食堂的饭卡有一种很诡异的设计>>>>>>

#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;
}


--------------------

Robberies 原题 详解

cost[i] or value[i] 都能作为包的对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: