From 81739cff27540fa04c3eecd48c704c7861bc08b6 Mon Sep 17 00:00:00 2001 From: Asif Ahmad <67323237+apexx77@users.noreply.github.com> Date: Thu, 21 Oct 2021 20:17:34 +0530 Subject: [PATCH] Created coin_change.cpp --- CPP/coin_change.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 CPP/coin_change.cpp diff --git a/CPP/coin_change.cpp b/CPP/coin_change.cpp new file mode 100644 index 0000000..a45f784 --- /dev/null +++ b/CPP/coin_change.cpp @@ -0,0 +1,39 @@ +/* + Problem Statement : Given a value N, find the number of ways to make change for N cents, + if we have infinite supply of each of S = { S1, S2, .. , SM } valued coins. +*/ + +#include +using namespace std; + +// Function to find the number + +long long int count( int S[], int m, int n ) { + + long long int dp[m + 1][n + 1]; + for (int i = 0; i <= n; i++) dp[0][i] = 0; + for (int i = 0; i <= m; i++) dp[i][0] = 1; + for (int i = 1; i <= m; i++) { + for (int j = 1; j <= n; j++) { + if (S[i - 1] <= j) { + dp[i][j] = dp[i][j - S[i - 1]] + dp[i - 1][j]; + } else dp[i][j] = dp[i - 1][j]; + } + } return dp[m][n]; +} + +// Main function + +int main() { + + int n, m; + cout << "Enter the value of N and M: " << "\n"; + cin >> n >> m; + int arr[m]; + cout << "Enter the values of S1, S2, ....SM : " << "\n"; + for (int i = 0; i < m; i++) + cin >> arr[i]; + cout << "Total number of required ways is : " << count(arr, m, n) << endl; + + return 0; +}