Leetcode 377: 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 = 4

The 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?

 

 1 public class Solution {
 2     public int CombinationSum4(int[] nums, int target) {
 3         if (target < 0) return 0;
 4         
 5         var dp = new int[target + 1];
 6         dp[0] = 1;
 7         
 8         for (int i = 1; i <= target; i++)
 9         {
10             for (int j = 0; j < nums.Length; j++)
11             {
12                 if (i - nums[j] >= 0)
13                 {
14                     dp[i] += dp[i - nums[j]];
15                 }
16             }
17         }
18         
19         return dp[target];
20     }
21 }

 

posted @ 2018-02-01 10:49  逸朵  阅读(101)  评论(0编辑  收藏  举报