首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

hdu2069 雌函数应用变形之总硬币数有限制

2012-09-07 
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拆分成各种硬币 一共用了多少个硬币

热点排行