깊이 우선 탐색으로 경우의 수를 모두 구할 수 있다.
#include <iostream>
#include <vector>
using namespace std;
void dfs(vector<int>& s, vector<int>& path, int idx) {
if (path.size() == 6) {
for (int x : path) cout << x << ' ';
cout << '\n';
return;
}
for (int i = idx; i < s.size(); i++) {
path.push_back(s[i]);
dfs(s, path, i + 1);
path.pop_back();
}
}
int main() {
while (true) {
int k;
cin >> k;
if (k == 0) break;
vector<int> s(k), path;
for (int i = 0; i < k; i++) cin >> s[i];
dfs(s, path, 0);
cout << '\n';
}
}
'개발일지 > 알고리즘' 카테고리의 다른 글
백준 9095번 : 1, 2, 3 더하기 (0) | 2025.02.02 |
---|---|
백준 1182번 : 부분수열의 합 (0) | 2025.02.02 |
백준 5430번 : AC (0) | 2025.01.28 |
백준 1966번 : 프린터 큐 (0) | 2025.01.28 |
백준 1158번 : 요세푸스 문제 (0) | 2025.01.25 |