11101. Coin Exchange
leetcode
function coinChange(coins, amount) {
let dp = Array(amount + 1).fill(amount + 1);
dp[0] = 0;
for (let i = 1; i < dp.length; i++) {
for (let n = 0; n < coins.length; n++) {
const prevCoinIdx = i - coins[n];
if (prevCoinIdx < 0) {
continue;
}
dp[i] = Math.min(dp[i], dp[prevCoinIdx] + 1);
}
console.table(dp);
}
return dp[dp.length - 1];
}
// Test cases
const testCases = [
{ c: [1, 3, 5], a: 11, expected: 3 },
];
testCases.forEach((test, index) => {
const result = coinChange(test.c, test.a);
console.log(`Test Case ${index + 1}: ${JSON.stringify(result) === JSON.stringify(test.expected) ? 'Passed' : 'Failed'} (Expected: ${JSON.stringify(test.expected)}, Got: ${JSON.stringify(result)})`);
});