Leetcode 377. 组合总和 Ⅳ C++

    技术2024-07-06  77

    Leetcode 377. 组合总和 Ⅳ

    题目

    给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。

    示例:

    nums = [1, 2, 3] target = 4 所有可能的组合为: (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1) 请注意,顺序不同的序列被视作不同的组合。 因此输出为 7。

    题解

    动态规划,0/1背包问题 dp[i]表示由给定的数组成i的组合个数 对于选取nums[j],组合数就成了dp[i] += dp[j-nums[i]],其中要保证j>=nums[i] 初始化dp[0] = 1,组成0就1中方案,不选数

    代码

    int combinationSum4(vector<int>& nums, int target) { vector<unsigned long> dp(target+1,0); int n = nums.size(); dp[0] = 1; for(int i=1; i<=target; i++){ for(int j=0; j<n; j++){ //选择nums[j] if(i-nums[j] >= 0){ dp[i] += dp[i-nums[j]]; } } } return dp[target]; }

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/combination-sum-iv 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    Processed: 0.011, SQL: 9