N과 M (8)

시간 제한1초메모리 제한512 MB

요약
서로 다른 N개의 자연수와 길이 M이 주어질 때, 그 수들에서 중복을 허용해 뽑은 길이 M의 비내림차순 수열을 사전순으로 모두 출력한다.
난이도

보통10점 중 4점

유형
백트래킹, 정렬, 재귀
정답자
아직 제출이 없습니다

문제

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 모두 만족하는 길이가 MM인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.

  • N개의 자연수 중에서 M개를 고른 수열
  • 같은 수를 여러 번 골라도 된다.
  • 고른 수열은 비내림차순이어야 한다.
    • 길이가 KK인 수열 AA가 A1≤A2≤⋯≤AK−1≤AKA_1 \le A_2 \le \dots \le A_{K-1} \le A_K를 만족하면 비내림차순이라고 한다.

입력

첫째 줄에 NN과 MM이 주어진다. (1≤M≤N≤81 \le M \le N \le 8)

둘째 줄에 NN개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.

출력

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

수열은 사전 순으로 증가하는 순서로 출력해야 한다.

예제3

  1. 예제 1

    입력
    3 1
    4 5 2
    
    예상 출력
    2
    4
    5
    
  2. 예제 2

    입력
    4 2
    9 8 7 1
    
    예상 출력
    1 1
    1 7
    1 8
    1 9
    7 7
    7 8
    7 9
    8 8
    8 9
    9 9
    
  3. 예제 3

    입력
    4 4
    1231 1232 1233 1234
    
    예상 출력
    1231 1231 1231 1231
    1231 1231 1231 1232
    1231 1231 1231 1233
    1231 1231 1231 1234
    1231 1231 1232 1232
    1231 1231 1232 1233
    1231 1231 1232 1234
    1231 1231 1233 1233
    1231 1231 1233 1234
    1231 1231 1234 1234
    1231 1232 1232 1232
    1231 1232 1232 1233
    1231 1232 1232 1234
    1231 1232 1233 1233
    1231 1232 1233 1234
    1231 1232 1234 1234
    1231 1233 1233 1233
    1231 1233 1233 1234
    1231 1233 1234 1234
    1231 1234 1234 1234
    1232 1232 1232 1232
    1232 1232 1232 1233
    1232 1232 1232 1234
    1232 1232 1233 1233
    1232 1232 1233 1234
    1232 1232 1234 1234
    1232 1233 1233 1233
    1232 1233 1233 1234
    1232 1233 1234 1234
    1232 1234 1234 1234
    1233 1233 1233 1233
    1233 1233 1233 1234
    1233 1233 1234 1234
    1233 1234 1234 1234
    1234 1234 1234 1234