www.acmicpc.net/problem/15649

 

15649번: N과 M (1)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

def dfs(depth, N, M):
    if depth == M:
        print(' '.join(map(str, out)))
        return

    # 전체를 탐색 1,2,3,4
    for i in range(N):
        # 아직 방문하지 않았다면
        if not visited[i]:
            visited[i] = True   # 방문 처리
            out.append(i+1)     # 방문 기록
            dfs(depth+1, N, M)      # 깊이 우선 탐색
            visited[i] = False  # 방문 기록 제거
            out.pop()


N,M = map(int, input().split())
visited = [False] * N
out = []
dfs(0,N,M)

'Algorithm' 카테고리의 다른 글

트리 자료구조 - 이진 탐색 트리  (0) 2021.04.16
이진탐색(Binary Search)  (0) 2021.04.16
BOJ - 18870번 - 좌표 압축  (0) 2021.04.08
BOJ - 11651번 - 좌표 정렬하기 2  (0) 2021.04.08
BOJ - 11650번 - 좌표 정렬하기  (0) 2021.04.08

+ Recent posts