【leetcode】377. Combination Sum IV【M】

来源:互联网 发布:sum服务器监控软件 编辑:程序博客网 时间:2024/06/05 20:26

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?

Credits:
Special thanks to @pbrother for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

动态规划,应该算是比较经典的无限背包问题

从1到target,

dp[i] = ∑ dp[i-j] (j<=0 and j < i) 求和

最后dp[target] 就是结果





class Solution(object):    def combinationSum4(self, nums, target):        nums.sort()        #print nums        res = [0] * (target+1)        res[0] = 1        for i in xrange(1,target+1):            t = 0            #print res            for j in nums:                #print i,j                if j > i:                    break                t += res[i-j]            res[i] = t        return res[-1]        """        :type nums: List[int]        :type target: int        :rtype: int        """


0 0
原创粉丝点击