这次python AC了!!
组合问题相较于全排列问题,在于每一次递归的初始位置,排列问题每次都是从头开始查找满足条件的数,但是组合问题查找是从上一次循环的下一个位置开始的,这点需要注意!
visit=[0]*20
result=[0]*20
def dfs(n,r,sta,deep):
if deep==r:
for i in range(r):
print("{:>3}".format(result[i]),end="")
print()
return
for i in range(sta,n):
if visit[i]==0:
visit[i]=1
result[deep]=i+1
dfs(n,r,i+1,deep+1)
visit[i]=0
if __name__=="__main__":
n,r=map(int,input().split())
dfs(n,r,0,0)