hdu2069 雌函数应用变形之总硬币数有限制
hdu2069 母函数应用变形之总硬币数有限制Coin ChangeTime Limit: 1000/1000 MS (Java/Others)Memory Limit
hdu2069 母函数应用变形之总硬币数有限制
Coin ChangeTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7813 Accepted Submission(s): 2592
Problem DescriptionInputOutputSample InputSample Output4 13 题意: 有50 25 10 5 1 的硬币 一共最多有100枚 输入n输出有多少种表示方法 #include<stdio.h>
#include<string.h>
int c1[251][101],c2[251][101];//次数顶多为250 前一个括号是指系数 后一个指硬币个数
int main()
{
int i,j,k,n,l,sum;
int val[6]={0,1,5,10,25,50};
memset(c1,0,sizeof(c1));
memset(c2,0,sizeof(c2));
for(i=0;i<=100;i++)
{
c1[i][i]=1;
}
n=250;
for(i=2;i<=5;i++)
{
for(j=0;j<=n;j++)
for(k=0;k+j<=n;k+=val[i])//次方最大为k+j所以要控制它小于n
for(l=0;l+k/val[i]<=100;l++)
c2[k+j][l+k/val[i]]+=c1[j][l];
for(k=0;k<=n;k++)
for(l=0;l<=100;l++)
{
c1[k][l]=c2[k][l];
c2[k][l]=0;
}
}
while(scanf("%d",&n)!=EOF)
{
sum=0;
for(i=0;i<=100;i++)
sum+=c1[n][i];
printf("%d\n",sum);
}
// }
return 0;
}此题给了一个思路 就是如何去求一个n拆分成各种硬币 一共用了多少个硬币