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; } }
浙公网安备 33010602011771号