class Solution:
def combine(self, n, k):
"""
:type n: int
:type k: int
:rtype: List[List[int]]
"""
res = []
resList = []
if k == 0:
return [[]]
# 回溯中的排列树解空间,直接套用排列树的模板
# 模板
# void backtrack (int t)
# {
# if (t>n) output(x); //x初始化为排列的其中一种
# else
# for (int i=t;i<=n;i++) {
# swap(x[t], x[i]); //调换位置
# if (constraint(t)&&bound(t)) //若不满足限制函数则不继续深入
# backtrack(t+1);
# swap(x[t], x[i]); //调回原位
# }
# }
def backtracking(start):
if len(resList) == k:
temp = resList[:]
res.append(temp)
for i in range(start, n+1):
resList.append(i)
backtracking(i+1)
resList.pop()
backtracking(1)
return res