uva 674 - Coin Change

这题调试了好久啊。

不要一开始就想着动态规划,慢慢做就可以做出来了,要记着给d[i][1]赋值。

#include<iostream>
#include<string.h>
using namespace std;
long long d[6][8000];
int coin[6]={0,1,5,10,25,50};
long long dp( int a,int k){
    if(d[a][k]>0)
        return d[a][k];
    d[a][k]=0;
    for(int i=0;i<=k/coin[a];i++){
        d[a][k]+=dp(a-1,k-i*coin[a]);
    }
    return d[a][k];
}
int main(){
    int m;
    memset(d,0,sizeof(d));
    for(int i=0;i<8000;i++)
        d[1][i]=1;
    while(cin>>m){
        if(m==0){
            cout<<0<<endl;
            continue;
        }
        cout<<dp(5,m)<<endl;
    }
}

 

posted on 2014-03-05 14:50  云在心  阅读(147)  评论(0)    收藏  举报

导航