[BOJ]15655 N과 M (6)

강동현·2024년 1월 9일
0

코딩테스트

목록 보기
69/111
  • sol : 백트래킹 재귀 DFS
  • 입력 배열(input)을 활용해 값 할당
#include <bits/stdc++.h>
using namespace std;
int N, M;
//N개 중 M개 고른 수열
//길이 M & 중복 허용 X
//오름차순 수열
vector<int> input_vec;
vector<int> vec(9);
vector<bool> visited(9);
void DFS(int depth, int num){
    if(depth == M){
        for(int i = 0; i < M; ++i){
            cout << vec[i] << ' ';
        }
        cout << '\n';
        return;
    }
    for(int i = num; i < N; ++i){
        if(!visited[i]){
            visited[i] = true;
            vec[depth] = input_vec[i];
            DFS(depth+1, i+1);
            visited[i] = false;
        }
    }
}
int main(){
    cin >> N >> M;
    for(int i = 0; i < N; ++i){
        int tmp;
        cin >> tmp;
        input_vec.push_back(tmp);
    }
    sort(input_vec.begin(), input_vec.end());
    DFS(0, 0);
    return 0;
}
profile
GAME DESIGN & CLIENT PROGRAMMING

0개의 댓글

관련 채용 정보