www.acmicpc.net/problem/15657

 

15657번: N과 M (8)

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

www.acmicpc.net


  • N과 M 시리즈 8번째 문제. 역시나 거의 비슷한 유형에 포인트만 살짝 다르다.

#include <iostream>
#include <algorithm>

using namespace std;

int n, m;
int arr[9];
int ans[9];

void check(int cur, int size)
{
    if(size == m)
    {
        for(int i = 0 ; i < m ; i++)
        {
            cout << ans[i] << " ";
        }
        cout << '\n';
        return;
    }
    for(int i = cur ; i < n ; i++)          // 비내림차순이고 같은 수를 여러번 골라도 되므로, 현재 인덱스부터 탐색
    {
        ans[size] = arr[i];
        check(i, size + 1);                 // 다음 자리 탐색
    }
}

int main(void)
{
    cin.tie(0);
    cout.tie(0);
    ios_base::sync_with_stdio(0);

    cin >> n >> m;
    for(int i = 0 ; i < n ; i++)
    {
        cin >> arr[i];
    }
    sort(arr, arr + n);
    
    check(0, 0);                            // 첫 인덱스를 0 으로 시작해야함
}

'PS > BOJ' 카테고리의 다른 글

[백준] 11053.cpp : 가장 긴 증가하는 부분 수열  (0) 2020.07.26
[백준] 1016.cpp : 제곱 ㄴㄴ 수  (0) 2020.07.26
[백준] 15654.cpp : N과 M (5)  (0) 2020.07.24
[백준] 15652.cpp : N과 M (4)  (0) 2020.07.23
[백준] 2407.cpp : 조합  (0) 2020.07.22

+ Recent posts