dp[i]表示target为i时的组合数。
对于每一个数i,遍历 nums 数组,dp[i] += dp[i-nums[j]] + nums[j] (满足nums[j] <= i)。
class Solution(object):
def combinationSum4(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
nums.sort()
#dp[i]表示组合为i有多少种情况
dp = [0] * (target + 1)
dp[0] = 1;
for i in range(1, target + 1):
#dp[i]组合种最后一个数的情况
for num in nums:
if num > i:
break
dp[i] += dp[i - num];
return dp[target];