From 93c3f50a7f028bf8f08faed65f53c37171b9652a Mon Sep 17 00:00:00 2001 From: samyakjain26 <79244707+samyakjain26@users.noreply.github.com> Date: Sun, 2 Oct 2022 08:43:48 +0530 Subject: [PATCH] Create CoinChange.cpp --- CoinChange.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 CoinChange.cpp diff --git a/CoinChange.cpp b/CoinChange.cpp new file mode 100644 index 0000000..4051587 --- /dev/null +++ b/CoinChange.cpp @@ -0,0 +1,48 @@ +// C++ program for coin change problem + +#include + +using namespace std; + +int count(int coins[], int n, int sum) +{ + int i, j, x, y; + + // We need sum+1 rows as the table + // is constructed in bottom up + // manner using the base case 0 + // value case (sum = 0) + int table[sum + 1][n]; + + // Fill the entries for 0 + // value case (sum = 0) + for (i = 0; i < n; i++) + table[0][i] = 1; + + // Fill rest of the table entries + // in bottom up manner + for (i = 1; i < sum + 1; i++) { + for (j = 0; j < n; j++) { + // Count of solutions including coins[j] + x = (i - coins[j] >= 0) ? table[i - coins[j]][j] + : 0; + + // Count of solutions excluding coins[j] + y = (j >= 1) ? table[i][j - 1] : 0; + + // total count + table[i][j] = x + y; + } + } + return table[sum][n - 1]; +} + +// Driver Code +int main() +{ + int coins[] = { 1, 2, 3 }; + int n = sizeof(coins) / sizeof(coins[0]); + int sum = 4; + cout << count(coins, n, sum); + return 0; +}