# leetcode 377. Combination Sum IV（python）

·  阅读 233

### 描述

Given an array of distinct integers nums and a target integer target, return the number of possible combinations that add up to target.

The test cases are generated so that the answer can fit in a 32-bit integer.

Example 1:

``````Input: nums = [1,2,3], target = 4
Output: 7
Explanation:
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.

Example 2:

``````Input: nums = [9], target = 3
Output: 0

Note:

``````1 <= nums.length <= 200
1 <= nums[i] <= 1000
All the elements of nums are unique.
1 <= target <= 1000

### 解答

``````class Solution:
def combinationSum4(self, nums: List[int], target: int) -> int:
self.m = [-1] * (target + 1)
self.m[0] = 1
def dfs(total):
if total < 0:
return 0
if self.m[total] != -1:
return self.m[total]
result = 0
for n in nums:
result += dfs(total - n)
self.m[total] = result
return result
return dfs(target)

### 运行结果

``````Runtime: 79 ms, faster than 23.53% of Python3 online submissions for Combination Sum IV.
Memory Usage: 14.1 MB, less than 18.29% of Python3 online submissions for Combination Sum IV.

### 原题链接

leetcode.com/problems/co…