个人信息
知乎:凯强同学
蓝桥杯笔记:https://mbd.pub/o/bread/ZpWbmJ9x
CSDN主页:凯强同学
题目描述
样例
递归
时间复杂度
参考文献
Python 代码
n,m=map(int,input().split())
def dfs(u,start):
if u+n-start<m:#剪枝
return
if u>m:#到达最终位置,输出
for i in range(1,m+1):
print(state[i],sep=' ',end=' ')
print()
return
#开始递归
for j in range(start,n+1):
if (used[j]==False) and (j>max(state)) :
state[u]=j
used[j]=True
dfs(u+1,j+1)
#恢复现场
state[u]=0
used[j]=False
state=[0]*(m+1) #m个位置,已占用,数据范围为1——m m+1)
used=[False]*(n+1)#数字是否被用过,False表示未用过
dfs(1,1)
递归
时间复杂度
参考文献
Python 代码
from itertools import *
n,m=map(int,input().split())
answer=[]
all=[i for i in range(1,n+1)]
for j in combinations(all,m):
print(*j)