본문 바로가기
알고리즘/완전 탐색

백준 15654번 : N과 M (5)

by Jason95 2021. 1. 5.

문제 링크 : 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 를 써야한다.

'알고리즘 > 완전 탐색' 카테고리의 다른 글

백준 2178번 : 미로 탐색  (0) 2021.01.24
백준 2667번 : 단지번호붙이기  (0) 2021.01.13
백트래킹 개념  (0) 2021.01.05
백준 11724번 : 연결 요소의 개수  (0) 2021.01.03
백준 1012번 : 유기농 배추  (0) 2021.01.02