LeetCode -- 518. 不重复的方案数

LeetCode -- 518. 不重复的方案数_第1张图片LeetCode -- 518. 不重复的方案数_第2张图片
来自面向大象编程,作者nettee。
LeetCode -- 518. 不重复的方案数_第3张图片
LeetCode -- 518. 不重复的方案数_第4张图片
限制面额从大到小
LeetCode -- 518. 不重复的方案数_第5张图片
LeetCode -- 518. 不重复的方案数_第6张图片
LeetCode -- 518. 不重复的方案数_第7张图片

	public int change(int amount, int[] coins){
		int m = coins.length;  // 硬币种类
		int[][] dp = new int[m+1][amount+1];
		
		for (int i=0;i<=m;i++) {
			for (int k=0;k<=amount;k++) {
				// base case:
				if (k==0) {
					dp[i][k] = 1;
				}else if (i==0) {
					dp[i][k] = 0;
				}else {
					// 递推关系
					dp[i][k] = dp[i-1][k]; // 不拿ci,硬币种类变少
					if (k>=coins[i-1]) {
						dp[i][k] += dp[i][k-coins[i-1]];  // 继续拿ci(前提是当前需要拿的amount>硬币面额)
					}
				}
			}
		}
		return dp[m][amount];
	}

LeetCode -- 518. 不重复的方案数_第8张图片

你可能感兴趣的:(LeetCode -- 518. 不重复的方案数)