377. Combination Sum IV

来源:互联网 发布:淘宝兼职都干什么 编辑:程序博客网 时间:2024/05/19 17:58

Given an integer array with all positive numbers and no duplicates,
find the number of possible combinations that add up to a positive
integer target.

  • 解题思路:
  • dp[i]:表示i由数组nums组成的数目,我们可以观察到 i - nums[j] + nums[j] = i;
  • 则有递推公式:dp[i] = sum(dp[i-nums[j]) , j =0 .. length-1;因此的除了以下的解法:
class Solution {public:    int combinationSum4(vector<int>& nums, int target) {        int MAX = target+1;        vector<int> dp(target+1,0);        dp[0] = 1;        for(int i = 1;i <= target;++i){            for(int j = 0;j < nums.size();++j){                if(i>=nums[j]&&dp[i-nums[j]]>0){                   dp[i] += dp[i-nums[j]];                 }                          }            //printf("dp[%d] = %d\n\r",i,dp[i]);        }        return dp[target];    }};
原创粉丝点击