代码随想录第四十四天 | 动态规划

今天是第四十四天,继续动态规划

 

518. 零钱兑换 II 

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];
    }
}

看题解还是很好理解的

 

377. 组合总和 Ⅳ

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是背包,内层是物品,上一题是反过来的。

 

今天的两道题问题可以用一个模版,看起来还行

posted @ 2022-11-25 15:32  小猫Soda  阅读(18)  评论(0)    收藏  举报