본문 바로가기

Algorithm/BOJ (백준)

[C++] 백준 15650 N과 M (2)

15650 N과 M (2)

 

15650번: N과 M (2)

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

www.acmicpc.net

C++

//
//  Created by SangWon Kang on 2020/09/04.
//  Copyright © 2020 SangWon Kang. All rights reserved.
//

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pii;
typedef vector<pair<int, int>> vpii;
#define INF 987654321
#define endl '\n';
#define FOR(i, n) for(int i=0; i<n; i++)
#define FOR1(i, n) for(int i=1; i<=n; i++)

int n, m;
vi v;

void solve(int num) {
    // 수열의 길이만큼 뽑으면 출력
    if (v.size() == m) {
        for (auto x : v) cout << x << ' ';
        cout << endl;
        return;
    }
    for (int i = num + 1; i <= n; i++) {
        // {1, 2} -> 2 pop -> {1} -> {1, 3} ... 형식
        v.push_back(i);
        solve(i);
        v.pop_back();
    }
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m;
    solve(0);

    return 0;
}

 

'Algorithm > BOJ (백준)' 카테고리의 다른 글

[C] 백준 2268 수들의 합 7  (0) 2024.11.06
[C++] 백준 6603 로또  (0) 2020.09.04
[C/C++] 백준 11092 Safe Passage  (3) 2020.07.27
[C/C++] 백준 14501 퇴사  (0) 2020.07.27
[C/C++] 백준 12865 평범한 배낭  (1) 2020.07.26