您的位置:首页 > 其它

hdu 2069 1 5 10 25 50 这几种硬币 一共100个(母函数)

2015-09-24 14:52 417 查看

题意: 有50 25 10 5 1 的硬币 一共最多有100枚 输入n输出有多少种表示方法

Sample Input
11
26

Sample Output
4
13

 

# include <iostream>
# include <cstdio>
# include <cstring>
# include <algorithm>
# include <string>
# include <cmath>
# include <queue>
# include <list>
# define LL long long
using namespace std ;

int c1[300][110],c2[300][110];
int ans[300] ;
int w[6]={0,1,5,10,25,50};

void Init(){
memset(c1,0,sizeof(c1));
memset(c2,0,sizeof(c2));
c1[0][0]=1;
for(int i=1;i<=5;i++)
{
for(int j=0;j<=250;j++)
for(int k=0;j+k*w[i]<=250;k++)
for(int p=0;k+p<=100;p++)
c2[j+k*w[i]][p+k]+=c1[j]

; for(int j=0;j<=250;j++) for(int p=0;p<=100;p++) { c1[j][p]=c2[j][p]; c2[j][p]=0; } } for(int i=1;i<=250;i++) for(int j=0;j<=100;j++) ans[i]+=c1[i][j]; //c1[11][3]表示这个方案 是用3枚硬币组成11的 ans[0]=1; } int main() { int n; Init(); while(~scanf("%d",&n)) { printf("%d\n",ans ); } return 0; }

View Code [p] 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: