백준 15650번
문제 자체는 전에 풀었던 백트래킹 문제와 거의 동일하다. 여기에 조건이 추가로 순서 상관없이 중복되는 값을 제외하는 것 빼고는!
N, M = map(int, input().split())
visited = [False] * N
tup = []
def recursive(start):
if len(tup) == M:
return print(' '.join(map(str, tup)))
for i in range(start, n): # 요기 start를 range 첫 번째 인수로 넣어준다
if not visited[i]:
visited[i] = True
tup.append(i+1)
recursive(i+1)
visited[i] = False
tup.pop()
recursive(0)
그래서 recursive 함수 안에 for문을 돌 때, 전에 돌았던 값을 돌지 않기 위해 변수 하나를 추가해주었다.
start 변수를 추가해서 range 첫번째 값으로 받으면 해당 변수부터 돌게 된다
이해가 안되면 외우자