题目:
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.
题意:
给定数组nums和数字target,求由nums中数字的和构成target的所有组合数
代码:
class Solution(object):
def combinationSum4(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
n = len(nums)
if n == 0 :
return 0
else :
dp = [0]*(target+1)
dp[0] = 1 #发现这个初始化很重要啊
for i in range(1,target+1) :
for x in nums :
if i-x >= 0 :
dp[i] += dp[i-x]
return dp[target]
笔记:
初步接触动态规划问题,表示很懵。参考了别人代码后,发现确实是这么回事。
参考:http://blog.csdn.net/qq508618087/article/details/52064134
下次遇到类似的问题,要先思考。