vector<vector<int>> dp(102, vector<int>(102, -1)); // Using a vector for memoization
int minCoinsMemo(int coins[], int sum, int n, vector<int>& chosenCoins) {
if (sum == 0) return 0;
if (n == 0 || sum < 0) return INT_MAX; // Return a large value for invalid cases
if (dp[n][sum] != -1) return dp[n][sum];
if (coins[n - 1] <= sum) {
dp[n][sum] = min(minCoinsMemo(coins, sum, n - 1, chosenCoins), 1 + minCoinsMemo(coins, sum - coins[n - 1], n, chosenCoins));
} else {
dp[n][sum] = minCoinsMemo(coins, sum, n - 1, chosenCoins);
}
return dp[n][sum];
}
void Print(int coins[],int n, int sum, vector<int> &chosenCoins;){
int i = n;
int j = sum;
while (i > 0 && j > 0) {
if (dp[i][j] == dp[i - 1][j]) {
i--;
} else {
cout<<coins[i - 1]<<' ';
j -= coins[i - 1];
}
}
}
int main() {
int sum = 7;
int coins[] = {1, 2, 5};
vector<int> chosenCoins;
int n = sizeof(coins) / sizeof(coins[0]);
int result = minCoinsMemo(coins, sum, n, chosenCoins);
if (result == INT_MAX) {
cout << "It's not possible to make the sum " << sum << " using the given coins." << endl;
} else {
cout << "Minimum number of coins required to make the sum " << sum << " is: " << result << endl;
}
Print(coins, n, sum, chosenCoins);
return 0;
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}