class ou:
def combine(n: int, k: int):
# 定义一个result集合,用来保存所有可能存在的结果集
result = []
def backTrack(first:int, curList: list):
# 终止条件 当当前列表长度 = k 时 说明当前列表满足条件,保存当前列表的结果集
if len(curList) == k:
result.append(curList[:])
# 遍历从 first 到 n的所有整数。
for i in range(first, n+1):
# 将 i 添加到现有的集合中
curList.append(i)
# 递归调用,从 i+1 - n 中获取剩余可能的集合
backTrack(i+1,curList)
# 回溯法在本轮递归调用完成后需要将 i 从列表中抛出
curList.pop()
# 定义完回溯方法后,正式调用方法
backTrack(1,[]);
# 返回所有满足条件的组合
return result
if __name__=='__main__':
print(ou.combine(5,3))