[每日一题]leetcode 377. 组合总和 Ⅳ

就一个dp,别想歪了

dp[i]表示组成数字i的种数

但这题是真坑。。结果保证int内,不代表中间数字在int内

class Solution {
public:
    long long dp[10010];
    int combinationSum4(vector<int>& nums, int target) {
        memset(dp, 0, sizeof(dp));
        sort(nums.begin(), nums.end());
        for(int i = 0; i < nums.size(); i++)
            dp[nums[i]] = 1;
       // cout << 11111 << endl;
     //  dp[0] = 1;
        for(int i = 0; i <= target; i++)
        {
            for(int j = 0; j < nums.size() && nums[j] <= i; j++)
            {
                if(dp[i - nums[j]] > INT_MAX) continue;
                dp[i] += dp[i - nums[j]];
            }
                            

        }
        return dp[target];
    }
};
自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
原文地址:https://www.cnblogs.com/WTSRUVF/p/14697337.html