diff --git a/dynamic-programming/coin_change.cpp b/dynamic-programming/coin_change.cpp new file mode 100644 index 00000000..39a45f73 --- /dev/null +++ b/dynamic-programming/coin_change.cpp @@ -0,0 +1,41 @@ +#include + +using namespace std; + +int count( int S[], int m, int n ) +{ + int i, j, x, y; + + // We need n+1 rows as the table is constructed + // in bottom up manner using the base case 0 + // value case (n = 0) + int table[n+1][m]; + + // Fill the enteries for 0 value case (n = 0) + for (i=0; i= 0)? table[i - S[j]][j]: 0; + // Count of solutions excluding S[j] + y = (j >= 1)? table[i][j-1]: 0; + table[i][j] = x + y; + } + } + return table[n][m-1]; +} + +int main() +{ + int coins[] = {1, 2, 3}; + int m = sizeof(coins)/sizeof(int); + int n = 5; + cout << count(coins, m, n); + return 0; +}