Prompt
Given an array of positive integers representing coin denominations and a single non-negative integer n representing a target amount of money, write a function that returns the number of ways to make change
for that target amount using the given coin denominations.
Note that an unlimited amount of coins is at your disposal.
Sample Input
n = 6
denoms = [1, 5]
Sample Output
Solution
import java.util.*;
class Program {
// O(nd) time | O(n) space
public static int numberOfWaysToMakeChange(int n, int[] denoms) {
int[] ways = new int[n + 1];
ways[0] = 1; //A
for (int denom : denoms) {
for (int amount = 1; amount < n + 1; amount++) {
if (amount >= denom) {
ways[amount] += ways[amount - denom];
//ways[amount]++; //B
}
}
}
return ways[n];
}
}
# A
# B
每次自己画图的时候要多画图几步,否则语句会错