模板:
def dfs(参数):
if(停止条件):
收集答案
退出
for(集合):
处理节点
递归函数
回溯
#从1-n里面,找出长度为k=2的所有组合
# 1 2 3 4 长度为2
# [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
def combine(n,k):
res=[]
path=[]
def dfs(start):
#递归出口,达到长度k就收集答案
if len(path)==k:
res.append(path[:])
return
#单层递归逻辑
for i in range(start,n-(k-len(path))+1): #用start控制数的选取,只能往前选
path.append(i+1) #选择该数
dfs(i+1) #进入下一层
path.pop() #回溯,回到上一层
dfs(0)
print(res)
def main():
n=int(input())
k=int(input())
combine(n,k)
if __name__=="__main__":
main()