문제
https://www.acmicpc.net/problem/15654
풀이
[dfs]
코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX 9
int N, M;
int original[MAX];
int visited[MAX];
void dfs(vector<int>& arr) {
if (arr.size() == M) {
//RESULT
for (int i = 0; i < M; i++) cout << arr[i] << " ";
cout << "\n";
return;
}
for (int i = 0; i < N; i++) {
if (visited[i]) continue;
visited[i] = 1;
arr.push_back(original[i]);
dfs(arr);
arr.pop_back();
visited[i] = 0;
}
}
int main() {
//INPUT
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> N >> M;
for (int i = 0; i < N; i++) cin >> original[i];
sort(original, original + N);
vector<int> arr;
//CHECK
dfs(arr);
return 0;
}
'개발 > 백준' 카테고리의 다른 글
[백준] 15652. N과 M (4) (0) | 2025.09.07 |
---|---|
[백준] 15650. N과 M (2) (0) | 2025.09.07 |
[백준] 1389. 케빈 베이컨의 6단계 법칙 (C++) (0) | 2025.07.06 |
[백준] 30804. 과일 탕후루 (C++) (0) | 2025.07.06 |
[백준] 2630. 색종이 만들기 (C++) (0) | 2025.06.30 |