https://www.acmicpc.net/problem/15649

N과 M이 주어졌을때 M만큼의 중복되지 않는 수열을 찾는 문제
DFS를 통해 visited방문을 통해 자기와 다른 idx를 탐색하고 M만큼의 길이가 되면 출력하는 문제
import sys
N,M=map(int,sys.stdin.readline().split())
visited=[False]*(N+1)
result=[]
def dfs(depth,visited):
if depth==M:
for i in result:
print(i,end=' ')
print()
else:
for i in range(1,N+1):
if not visited[i]:
visited[i]=True
result.append(i)
dfs(depth+1,visited)
result.pop()
visited[i]=False
dfs(0,visited)