본문 바로가기

Algorithm/Python

048 - 중복순열 구하기

1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 중복을 허락하여 M번을 뽑아 일렬로 나열 하는 방법을 모두 출력합니다.

 

 

입력설명
첫 번째 줄에 자연수 N(3<=N<=10)과 M(2<=M<=N) 이 주어집니다.

 

출력설명
첫 번째 줄에 결과를 출력합니다. 맨 마지막 총 경우의 수를 출력합니다. 출력순서는 사전순으로 오름차순으로 출력합니다.

 

입력예제 1

3 2

 

출력예제 1

11
12
13

21

22

23

31

32

33

9

 

 

 

#import sys
#sys.stdin = open('in.txt', 'rt')


def DFS(L):
    global cnt

    if L == m:
        cnt += 1
        print(*a)
        return
    else:
        for i in range(n):
            a[L] = i+1
            DFS(L+1)


if __name__ == '__main__':
    n, m = map(int, input().split())
    a = [0]*m
    cnt = 0
    # print(n, m, a)
    DFS(0)
    print(cnt)

 

 

 

 

 

'Algorithm > Python' 카테고리의 다른 글

050 - 순열 구하기  (0) 2023.08.28
049 - 동전교환  (0) 2023.08.28
047 - 바둑이 승차(DFS)  (0) 2023.08.26
046 - 합이 같은 부분집합(DFS)  (0) 2023.08.25
045 - 부분집합 구하기(DFS)  (0) 2023.08.25