自学内容网 自学内容网

Leetcode 377. 组合总和 Ⅳ 动态规划

原题链接:Leetcode 377. 组合总和 Ⅳ

在这里插入图片描述

可参考官解

class Solution {
public:
    int combinationSum4(vector<int>& nums, int target) {
        vector<int> dp(target + 1);
        dp[0] = 1;
        // 总和为 i 的元素组合的个数
        for (int i = 1; i <= target; i++) {
            // 每次都遍历nums数组,考虑了选择每一个元素,dp[i]的可能,即dp[i-x]
            // 下一次遍历不同的i值,又会重新遍历nums数组,又会考虑选择每一个元素的可能
            // 因此可以出现,先选1,再选2,或者先选2再选1的情况
            for (auto x : nums) {
                if (x <= i && dp[i - x] < INT_MAX - dp[i]) {
                    dp[i] += dp[i - x];
                }
            }
        }
        return dp[target];
    }
};

原文地址:https://blog.csdn.net/qq_45791939/article/details/145147655

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!