每日力扣-377. 组合总和 Ⅳ

  1. 组合总和 Ⅳ
    题目:
    给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。
    请注意,顺序不同的序列被视作不同的组合。

使用完全背包来解决:

class Solution {
    public int combinationSum4(int[] nums, int target) {
        int[] dp=new int[target+1];
        dp[0]=1;
        
        for (int i = 0; i < dp.length; i++) {//遍历容量
            for (int j =0 ; j <  nums.length  ; j++) {//遍历物品
                if (i>=nums[j])dp[i]+=dp[i-nums[j]];
            }
        }
        return dp[target];
    }
}

思路:
如果求组合数就是外层for循环遍历物品,内层for遍历背包
如果求排列数就是外层for遍历背包,内层for循环遍历物品

你可能感兴趣的:(leetcode,动态规划,算法)