您的位置:首页 > 其它

HDU's ACM 2069 Coin Change

2014-11-20 00:37 375 查看
原题链接:HDU's ACM 2069 Coin Change

分析:这题为母函数题,较为特殊的地方是硬币数有限制,故而要在各个方案中记录硬币数,超过限定的不再计数。

WA Code:

<span style="font-family:Microsoft YaHei;font-size:14px;">#include <stdio.h>
#include <string.h>

#define TYPEOFCOINS 5
#define MAXNUMOFCOINS 100
#define MAXN 250+10

const int coins[TYPEOFCOINS] = {1, 5, 10, 25, 50};

int coeff1[MAXN][MAXNUMOFCOINS+1]; // 前下标代表金额,后下标代表硬币数
int coeff2[MAXN][MAXNUMOFCOINS+1];

int res[MAXN];

int init()
{
int i, j, k, l;
memset(coeff1, 0, sizeof(coeff1));
memset(coeff2, 0, sizeof(coeff2));
memset(res, 0, sizeof(res));

coeff1[0][0] = 1;
for(i=0;i<TYPEOFCOINS;++i){
for(j=0;j<MAXN;++j)
for(k=0;k*coins[i]+j<MAXN;++k)
for(l=0;l+k<=MAXNUMOFCOINS;++l)
coeff2[k*coins[i]+j][l+k] += coeff1[j][l];

memcpy(coeff1, coeff2, sizeof(coeff1));
memset(coeff2, 0, sizeof(coeff2));
}

for(i=0;i<MAXN;++i)
for(j=0;j<MAXNUMOFCOINS;++j)
res[i] += coeff1[i][j];

res[0] = 1;
}

int main()
{
int n;
init();
while(scanf("%d", &n) != EOF) {
printf("%d\n", res
);
}
return 0;
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  acm 杭电 算法 母函数