Mr Zz

导航

HDU Square Coins

简单题

给你17种价值的硬币 拼出客户输入的数字输出有几种可能  17 种分别是1 到17  的平方

#include<iostream>
#include<cstring>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define MAX 400
int c1[MAX];
int c2[MAX];
int main(){
int coins[18];
int n=1,i,k,l,j;
//freopen("t.txt","r",stdin);
for(i=0;i<=300;i++)
c1[i] = 1;
for(i=1;i<=17;i++) {
coins[i] = i*i;
}
for(l=2;l<=17;l++) {
for(i=0;i<=300;i++) {
for(k=0;i+k<=300;k+=coins[l]) {
c2[i+k] += c1[i];
}
}
for(j=0;j<=300;j++) {
c1[j] = c2[j];
c2[j] = 0;
}
}
while(scanf("%d",&n)!=EOF) {
if(n==0)
break;
printf("%d\n",c1[n]);
}
return 0;
}



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