Mr Zz

导航

HDU Coin Change

和前几个母函数题目差不多 

但这个有个前提条件每种方案不能超过100 个硬币  去掉这个条件 就是母函数水题

要用2 维的数组来表达 

母函数的理解  最开始的式子是指 用这种硬币 表示这个数值有没有可能表达

#include<iostream>
#include<cstring>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int c1[260][260];
int c2[260][260];
int main(){
int n;
freopen("t.txt","r",stdin);
int coins[] = {1,5,10,25,50};
int i,j,k;
for(i = 0;i <= 250;i ++) {
for(j = 0;j <= 250;j ++) {
c2[i][j] = 0;
c1[i][j] = 0;
}
if(i<=100) {
c1[i][i] = 1;
}
}
for(i = 1;i < 5; i ++ ) {
for(j = 0;j <= 250;j ++) {
for(k = 0;j+k <= 250;k += coins[i])
for(int l = 0;l+k/coins[i] <= 100;l ++) {
c2[j+k][l+k/coins[i]] += c1[j][l];
}
}
for(j = 0;j <= 250;j ++) {
for(k = 0;k <= 250;k ++) {
c1[j][k] = c2[j][k];
c2[j][k] = 0;
}
}
}
while(scanf("%d",&n)!=EOF) {
int sum = 0;
for(j = 0;j <= n;j++)
sum += c1[n][j];
printf("%d\n",sum);
}
return 0;
}


 

posted on 2011-10-15 14:31  Mr Zz  阅读(185)  评论(0)    收藏  举报