https://www.youtube.com/watch?v=E-Cb8ytpApo
n,m=map(int,input().split())
s=[]
def dfs():
if len(s)==n:
print(' '.join(map(str,s)))
return
for i in range (1,m+1):
if i not in s:
s.append(i)
dfs()
s.pop()
dfs()
n,m=map(int,input().split())
visited=[0]*(n+1)
arr=[0]*(m)
def dfs(index):
if index==m:
index=0
print(*arr)
return
for i in range(1,n+1):
if visited[i]==0:
visited[i]=1
arr[index]=i
dfs(index+1)
visited[i]=0
dfs(0)
참조
https://blog.encrypted.gg/732
https://www.youtube.com/watch?v=E-Cb8ytpApo