๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 15663๋ฒˆ - N๊ณผ M (9)

by ์•ˆ์ฃผํ˜• 2021. 12. 4.

๋ฌธ์ œ

https://www.acmicpc.net/problem/15663

 

15663๋ฒˆ: N๊ณผ M (9)

ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <vector>
#include <algorithm>
#define max 9

using namespace std;

int N, M;
int arr[max];
bool visited[max];
vector<int>v;

void dfs(int start) {
	if (start == M) {
		for (int i = 0; i < M; i++){
			cout << arr[i] << " ";
		}
		cout << "\n";
	}
	else {
		int check = -1;
		for (int i = 1; i <= N; i++) {
			if (!visited[i]&&v[i-1]!=check) {
				visited[i] = true;
				check = v[i - 1];
				arr[start] = v[i - 1];
				dfs(start + 1);
				visited[i]=false;
			}
		}
	}
}
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);

	cin >> N >> M;
	for (int i = 0; i < N; i++) {
		int num; cin >> num;
		v.push_back(num);
	}
	sort(v.begin(), v.end());
	dfs(0);
}

๋Œ“๊ธ€