티스토리 뷰

Problem Solving/백준 온라인 저지

15650-N과 M (2)

developer0hye 2020. 10. 24. 15:17

www.acmicpc.net/problem/15650

 

15650번: N과 M (2)

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

www.acmicpc.net

주어진 N개의 숫자들로 M개의 숫자를 뽑아 만들 수 있는 수를 오름차순으로 출력하는 문제로 조합 문제입니다. 한 자리의 수를 뽑고 그다음 자리의 수를 뽑을때, 보다 큰 수를 뽑아야 하는 점을 생각해내는 것이 풀이의 핵심이라 생각됩니다.

코드

#include <iostream>
using namespace std;

int N;
int M;
int numbers[9] = {0,};

void combination(int len)
{
    if(len == M + 1)
    {
        for(int i = 1; i <= len - 1; i++)
        {
            cout << numbers[i] << " ";
        }
        cout << '\n';
        return;
    }

    for(int i = numbers[len - 1] + 1; i <= N; i++)
    {
        numbers[len] = i;
        combination(len + 1);
    }

}

int main()
{
    cin >> N >> M;
    combination(1);
    return 0;
}

'Problem Solving > 백준 온라인 저지' 카테고리의 다른 글

15652-N과 M (4)  (0) 2020.10.26
15651-N과 M (3)  (0) 2020.10.26
15649-N과 M (1)  (0) 2020.10.24
17471-게리맨더링  (0) 2020.10.23
17837-새로운 게임 2  (0) 2020.10.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함