在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
每行只有一个正整数N,N小于32768。
对应每个输入,输出兑换方法数。
input
2934
12553
output
718831
13137761
13137761
dp[i][j] 为 方法数
状态转移方程 : dp[j] = dp[j] + dp[j - i]; (因为值是一分,二分,三分。。正好是i的值)
注意 : 初始值 dp[0] = 1; 因为什么都不放的方法数是1
#include <stdio.h>
#include <stdlib.h>
int dp[35000];
int main()
{
int i, j;
int n;
dp[0] = 1;
for (i = 1; i <= 3; i++)
{
for (j = i; j <= 35000; j++)
{
dp[j] += dp[j - i];
}
}
while (scanf("%d", &n) != EOF)
{
printf("%d\n", dp[n]);
}
return 0;
}