Algorithm ๐ง๐ป๐ป/๋ฐฑ์ค(BOJ)
[๋ฐฑ์ค,c++] 15664๋ฒ - N๊ณผ M (10)
dkswnkk
2021. 12. 4. 19:01
๋ฌธ์
https://www.acmicpc.net/problem/15664
15664๋ฒ: N๊ณผ M (10)
ํ ์ค์ ํ๋์ฉ ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ด์ ์ถ๋ ฅํ๋ค. ์ค๋ณต๋๋ ์์ด์ ์ฌ๋ฌ ๋ฒ ์ถ๋ ฅํ๋ฉด ์๋๋ฉฐ, ๊ฐ ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํด์ผ ํ๋ค. ์์ด์ ์ฌ์ ์์ผ๋ก ์ฆ๊ฐํ๋ ์์๋ก ์ถ๋ ฅํด
www.acmicpc.net
์ฝ๋
#include <iostream>
#include <vector>
#include <algorithm>
#define max 9
using namespace std;
int N, M;
int arr[max];
bool visitied[max];
vector<int>v;
void dfs(int num, int start) {
if (start == M) {
for (int i = 0; i < M; i++) {
cout << arr[i] << ' ';
}
cout << "\n";
}
else {
int check = -1;
for (int i = num; i <= N; i++) {
if (!visitied[i] && v[i - 1] != check) {
visitied[i] = true;
check = v[i - 1];
arr[start] = v[i - 1];
dfs(i, start+1);
visitied[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(1, 0);
}