代码随想录第四十四天 | 动态规划
今天是第四十四天,继续动态规划
class Solution { public int change(int amount, int[] coins) { int n = coins.length; int[] dp = new int[amount+1]; dp[0] = 1; for(int i = 0; i<n; i++){ for(int j = 0; j<= amount; j++){ if(j-coins[i]<0){ continue; } dp[j] += dp[j - coins[i]]; } } return dp[amount]; } }
看题解还是很好理解的
class Solution { public int combinationSum4(int[] nums, int target) { int n = nums.length; int[] dp = new int[target+1]; dp[0] = 1; for(int i = 0; i<=target; i++){ for(int j = 0; j<n; j++){ int temp = i - nums[j]; if(temp < 0){ continue; } dp[i] += dp[temp]; } } return dp[target]; } }
这道题求的是组合的个数,上一道题求的是排序的个数,组合的话就是外层for是背包,内层是物品,上一题是反过来的。
今天的两道题问题可以用一个模版,看起来还行

浙公网安备 33010602011771号