티스토리 뷰

Problem Solving/백준 온라인 저지

15649-N과 M (1)

developer0hye 2020. 10. 24. 15:15

www.acmicpc.net/problem/15649

 

15649번: N과 M (1)

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

www.acmicpc.net

간단한 순열 문제입니다. 단, 작은 수 부터 출력해야 하며 중복을 허용하지 않고 선택해야 한다는 점을 고려해야합니다.

코드

#include <iostream>
using namespace std;

int N;
int M;
int numbers[9];
bool picked[9];

void permutation(int cnt) //cnt: 몇 번째 자릿수인지를 의미함(맨 앞 자릿수 부터 셈)
{
    if(cnt == M + 1)
    {
        for(int j = 1; j <= M; j++)
            cout << numbers[j] << " ";
        cout << '\n';
        return;
    }

    for(int i = 1; i <= N; i++)
    {
        if(picked[i])
            continue;

        numbers[cnt] = i;
        picked[i] = true;

        permutation(cnt + 1);
        
        picked[i] = false;
    }
}


int main()
{
    cin >> N >> M;
    permutation(1);

    return 0;
}

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

15651-N과 M (3)  (0) 2020.10.26
15650-N과 M (2)  (0) 2020.10.24
17471-게리맨더링  (0) 2020.10.23
17837-새로운 게임 2  (0) 2020.10.20
2056-작업  (0) 2020.10.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함