day22| 回溯算法
三道题目 组合 组合之和 和电话号码
组合之和和组合异曲同工。大概逻辑就是
- 首先明确组合和排序的区别。 在组合里面我们要确保不能有重复的序列
- 我们保持整体序列是有序的,这样就避免了在遍历的过程中出现重复的状况
- 假设我们输入一个 cur 那么我们就遍历所有比 cur 大的数
- 在代码中就相当于while last<=n:这里的遍历
def dfs(path):
if len(path)==k:
res.append(path[:])
return
last = path[-1] if path else 0
# 剪枝
if len(path)+n-last<k:
return
last+=1
while last<=n:
dfs(path+[last])
last+=1
