알고리즘/완전 탐색
백준 15654번 : N과 M (5)
Jason95
2021. 1. 5. 18:58
문제 링크 : www.acmicpc.net/problem/15654
내 풀이(2021.1.5.) :
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> list;
bool visit[8];
int N, M;
void search(vector<int>& v) {
// 해를 찾음
if (v.size() == M) {
for (int i = 0; i < v.size(); i++) {
printf("%d ", v[i]);
}
printf("\n");
return;
}
// 탐색
for (int i = 0; i < list.size(); i++) {
if (visit[i] == true) continue;
visit[i] = true;
v.push_back(list[i]);
search(v);
v.pop_back();
visit[i] = false;
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> N >> M;
for (int i = 0; i < N; i++) {
int temp; cin >> temp; list.push_back(temp);
}
sort(list.begin(), list.end());
vector<int> v;
search(v);
return 0;
}
cout << ~ << endl; 를 쓰면 시간 초과가 나므로, printf 를 써야한다.