๋ฌธ์
https://www.acmicpc.net/problem/15649
๋ฌธ์ ์ดํด
- 1๋ถํฐ N๊น์ง ์์ฐ์ ์ค์์ ์ค๋ณต ์์ด M๊ฐ๋ฅผ ๊ณ ๋ฅธ ์์ด์ ๋ชจ๋ ๊ตฌํ๋ค.
๋ฌธ์ ํ์ด
๐กDFS๋ฅผ ์ด์ฉํ ๋ฐฑํธ๋ํน
1๋ถํฐ N๊น์ง ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด ํ์ํ๋ฉฐ ์ค๋ณต ์์ด M๊ฐ์ ์๋ฅผ ์ ํํ๊ณ ์ถ๋ ฅํ๋ค.
- ์ข
๋ฃ ์กฐ๊ฑด
: M๊ฐ์ ์๋ฅผ ๋ชจ๋ ์ ํํ์ ๋ - ํ์
- 1๋ถํฐ N๊น์ง ํ์์ ๋ฐ๋ณตํ๋ค.
- ์๋ฅผ ์ค๋ณตํด์ ์ ํํ์ง ์๋๋ก ๋ฐฉ๋ฌธ ํ๊ธฐํ๋ค.
- ํ์ํ ์๋ฅผ ์ถ๋ ฅํ ๋ฐฐ์ด์ ์ฝ์ ํ๋ค.
- ํ์์ด ๋๋ ์๋ฅผ ๋ฐฐ์ด์์ ์ ๊ฑฐํ๊ณ ๋ฐฉ๋ฌธํ์ง ์์ ์๋ก ํ๊ธฐํ๋ค. - ํ์ ์ข
๋ฃ
- ์ ํํ M๊ฐ์ ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ ์ถ๋ ฅ ํ ํ์์ ์ข ๋ฃํ๋ค.
์ฝ๋
#include<iostream>
#include<vector>
using namespace std;
int N, M;
vector<int> v;
vector<bool> visited;
void dfs(int cur) {
// ์ข
๋ฃ ์กฐ๊ฑด: M๊ฐ์ ์๋ฅผ ๋ชจ๋ ์ ํํจ
if (cur == M) {
for (int i: v)
cout << i << ' ';
cout << '\n';
return;
}
for (int i = 1; i <= N; i++) {
if (!visited[i]) {
visited[i] = true;
v.push_back(i);
dfs(cur + 1);
visited[i] = false;
v.pop_back();
}
}
}
int main() {
cin >> N >> M;
visited.assign(N + 1, false);
dfs(0);
return 0;
}
'๐ญ Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 1789๋ฒ: ์๋ค์ ํฉ (0) | 2024.10.29 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 15650๋ฒ: N๊ณผ M (2) (0) | 2024.10.28 |
[SWEA][C++] 1289. ์์ฌ์ ๋ฉ๋ชจ๋ฆฌ ๋ณต๊ตฌํ๊ธฐ (0) | 2024.10.16 |
[BOJ][C++] ๋ฐฑ์ค 2002๋ฒ: ์ถ์ (0) | 2024.06.14 |
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ๋คํธ์ํฌ (0) | 2024.06.04 |