钱币兑换问题

来源:互联网 发布:商家如何开通淘宝直播 编辑:程序博客网 时间:2024/04/30 10:41
E - 钱币兑换问题
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit Status

Description

在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
 

Input

每行只有一个正整数N,N小于32768。
 

Output

对应每个输入,输出兑换方法数。
 

Sample Input

293412553
 

Sample Output

71883113137761
 
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=32768+5;int n;int dp[maxn][5];void init() {    memset(dp,0,sizeof(dp));    dp[1][1]=1;    dp[1][2]=1;    dp[1][3]=1;    dp[2][1]=1;    dp[2][2]=2;    dp[2][3]=2;    dp[3][1]=1;    dp[3][2]=2;    dp[3][3]=3;    for(int i=4;i<maxn;i++)    {        for(int j=1;j<=3;j++)        {            if(j==1)dp[i][j]=1;            else dp[i][j]=dp[i-j][j]+dp[i][j-1];        }    }}int main() {    init();    while(~scanf("%d",&n)) {        printf("%d\n",dp[n][3]);    }    return 0;}

0 0
原创粉丝点击