您的位置:首页 > 其它

hdu 1085 Holding Bin-Laden Captive! (母函数)

2012-07-28 09:47 405 查看
跟模版有点变化,这里的硬币是有个数的所以要变一下

#include"stdio.h"
int main()
{
int c1[8005],c2[8005],num[3],coin[3]={1,2,5};
int i,j,k,sum;
while(scanf("%d%d%d",&num[0],&num[1],&num[2])!=EOF)
{
if(!num[0]&&!num[1]&&!num[2])break;
if(num[0]==0)
{
printf("1\n");continue;
}
sum=num[0]+2*num[1]+5*num[2];
for(i=0;i<=8000;i++)
c1[i]=c2[i]=0;
for(i=0;i<=num[0];i++)
c1[i]=1;
for(i=1;i<=2;i++)
{
for(j=0;j<=sum;j++)
{//硬币的个数k有范围,所以不能再用模版的方法(for(k=0;k+j<=sum;k+=coin[i]))

for(k=0;k*coin[i]+j<=sum&&k<=num[i];k++)
c2[j+k*coin[i]]+=c1[j];
}
for(j=0;j<=sum;j++)
{
c1[j]=c2[j];c2[j]=0;
}
}
for(i=1;i<=8000;i++)
{
if(c1[i]==0)break;
}
printf("%d\n",i);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: