UVa-674-Coin Change
AOAPC I: Beginning Algorithm Contests (Rujia Liu) :: Volume 5. Dynamic Programming
// 674 - Coin Change #include <iostream> #include <cstring> #define MAXN 7500 using namespace std; int coin[5] = {1, 5, 10, 25, 50}; int a[MAXN][5]; int m; int dp(int m, int n) { if(a[m][n] != -1) return a[m][n]; a[m][n] = 0; for(int i = n; i < 5; i++) if(m >= coin[i]) a[m][n] += dp(m-coin[i], i); return a[m][n]; } int main(void) { memset(a, -1, sizeof(a)); for(int i = 0; i < 5; i++) a[0][i] = 1; while(cin >> m) cout << dp(m, 0) << endl; return 0; }