관리 메뉴

fatalite

N과 M(4) - 백준 15652 본문

코딩 인터뷰/C++

N과 M(4) - 백준 15652

fataliteforu 2023. 2. 26. 17:06

문제 정보


< 실버 3 >
백트래킹, 재귀

 

Solution


#include <iostream>
#include <vector>

int n;
int m;
using namespace std;

vector<vector<int>> list;
void Select(int start, int end, vector<int> v) {
    if (start == end) {
        list.push_back(v);
        return;
    }
    else {
        if (v.empty()) {
            for (int i = 1; i <= n; i++) {
                vector<int> tmp = v;
                tmp.push_back(i);
                Select(start + 1, end, tmp);
            }
        }
        else {
            for (int i = 1; i <= n; i++) {
                // 만약 마지막 원소보다 i가 크다면 유망함.
                if (i >= v.back()) {
                    vector<int> tmp = v;
                    tmp.push_back(i);
                    Select(start + 1, end, tmp);
                }
            }
        }
        
    }
}


int main()
{
    cin >> n >> m;
    vector<int> startVector;
    Select(0, m, startVector);
    for (vector<int> u : list) {
        for (int y : u) {
            cout << y << " ";
        }
        cout << endl;
    }
}

'코딩 인터뷰 > C++' 카테고리의 다른 글

N과 M(1) - 백준 15649  (0) 2023.02.27
N과 M(6) - 백준 15655  (0) 2023.02.26
최소비용 구하기 - 1916 백준  (0) 2023.02.13
거짓말 - 백준 1043  (0) 2023.02.06
RGB 거리 - 백준 1149  (0) 2023.02.05