def backtrack(res, result, target, start):
if target <= 0 and len(result) >= k:
if not target and len(result) == k:
res.append(list(result))
return
for i in range(start, 10):
result.append(i)
backtrack(res, result, target-i, i+1)
result.pop()
res = []
backtrack(res, [], n, 1)
return res
LeetCode.17 电话号码的字母组合
if not digits: return []
phoneMap = {
"2": "abc",
"3": "def",
"4": "ghi",
"5": "jkl",
"6": "mno",
"7": "pqrs",
"8": "tuv",
"9": "wxyz",
}
def backtrack(res, result, k):
if k == len(digits):
res.append(result)
return
for i in phoneMap[digits[k]]:
result += i
backtrack(res, result, k+1)
result = result[:-1]
res = []
backtrack(res, "", 0)
return res