vidigummy KAU/알고리즘 공부(백준!)

BOJ N과 M 시리즈

vidi 2021. 1. 16. 03:07

오우... 이건... 응... 9 뚫기가 좀 어려웠고 나머지는 괜찮았다. 하나 뚫으면 나머지가 쭉쭉 풀리는 느낌이라고 해야하나?

N과 M 시리즈.zip
0.01MB

여기서... 예시로 들만한게 있을거다. 9번을 하자.

www.acmicpc.net/problem/15666

 

15666번: N과 M (12)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int n, m, len = 0;
vector<int> ans;
vector<vector<int>> ha;
bool check[10001] = { false };
vector<bool> idxCh(10);

vector<int> input;

void NandM(int idx, int cnt) {
	if (cnt == m) {
		if (!binary_search(ha.begin(), ha.end(), ans)) {
			for (int i = 0; i < m; i++)	cout << ans[i] << " ";
			cout << "\n";
			ha.push_back(ans);
		}
		return;
	}
	for (int i = idx; i < n; i++) {

		ans[cnt] = input[i];
		NandM(i, cnt + 1);

	}
	return;
}

int main() {
	ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL);
	cin >> n >> m;
	input = vector<int>(n);
	ans = vector<int>(m);
	for (int i = 0; i < n; i++) { cin >> input[i]; }
	sort(input.begin(), input.end());
	NandM(0, 0);
	return 0;
}

대충 이런 논리로 12문제를 풀었다. 개꿀이었다. 백트레킹 만세.

'vidigummy KAU > 알고리즘 공부(백준!)' 카테고리의 다른 글

BOJ 1976 여행가자  (0) 2021.01.16
BOJ 9663 N-Queen  (0) 2021.01.16
BOJ 11286 절댓값 힙  (0) 2021.01.14
BOJ 11279/1927 최대힙/최소힙  (0) 2021.01.14