LeetCode377. Combination Sum IV

来源:互联网 发布:淘宝买家账号钻石级别 编辑:程序博客网 时间:2024/05/18 18:45

LeetCode377. Combination Sum IV

题目:

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.

Example:

nums = [1, 2, 3]target = 4The possible combination ways are:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)Note that different sequences are counted as different combinations.Therefore the output is 7.

Follow up:
What if negative numbers are allowed in the given array?
How does it change the problem?
What limitation we need to add to the question to allow negative numbers?


题意分析:这道题并没有和前面的几道题一样,而是选择yoga动态规划去解决。

comb[target] = sum(comb[target - nums[i]]), where 0 <= i < nums.length, and target >= nums[i].


代码:

class Solution {  public:      int combinationSum4(vector<int>& nums, int target) {          if(nums.size()==0) return 0;          vector<int> dp(target+1, 0);          dp[0] = 1;          for(int i =1; i <= target; i++)          {              for(auto val: nums)                  if(val <= i) dp[i] += dp[i-val];          }          return dp[target];      }  };