๋ฌธ์ :
๋ถ์ :
์ฌ์ค ์ ํ ์ดํด๊ฐ ๋์ง ์์์ ๋ธ๋ก๊ทธ๋ค์ ์ฐธ๊ณ ํ์ฌ ํ์๋ค.
dfs๊ฐ ๋ฐฑํธ๋ํน์ด๋ ๊ด๋ จ์ด ๊น๋ค ํ๋๋ฐ ์ด ๋ฌธ์ ๊ฐ ๋ฐ๋ก ๋ฐฑํธ๋ํน ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉํ๋ ๊ณ ์ ์ ์ธ ๋ฌธ์ ๋ผ๊ณ ํ๋ค.
c++ ์์ next_permutation์ด๋ผ๋ ์์ด ์ฐพ๋ ํจ์๊ฐ <algorithm>์ ์๋ค๊ณ ํ๋ค. ์ด๊ฑธ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ํ ์ ์์ ๊ฒ ๊ฐ๋ค.
ํ์ง๋ง ๋ฐฑํธ๋ํน ์ฐ์ต์ ์ํด ๋ฐฑํธ๋ํน ๋ฐฉ์์ผ๋ก ์์ ํ์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์๋ค.
dfs์ ๋ง์ฐฌ๊ฐ์ง๋ก visit (๋ฐฉ๋ฌธํ๋์ง ์ํ๋์ง ๊ฒ์ฌํ๋ ๋ฐฐ์ด)์ด ํ์๋ก ๋๋ค.
v vector์ ๋ฃ์ด์ฃผ๋๋ฐ ๋ฐฉ๋ฌธํ์ง ์์์ผ๋ฉด ๋ฃ์ด์ฃผ๊ณ ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด ๋ฐฉ๋ฌธ์ด ๋๋๋ฉด ๋ค์ ์ฐจ๋ก ๋ฐฉ๋ฌธ์ ์ํด ๋ง์ง๋ง์ ๋ฃ์ ์์๋ฅผ ๊บผ๋ด์ค๋ค. ๊ทธ๋ฆฌ๊ณ visit ๋ฐฐ์ด๋ false๋ก ๋ง๋ค์ด ๋๋๋ค. ์ด๋ ๊ฒ ๋ฐ๋ณต์ด ๋๋๊ณ ์์ด input ๊ฐ n์ ๋๋ฌํ๋ฉด์ ๊ฐ์ ์ถ๋ ฅํ๊ณ ํจ์๋ฅผ ๋๋ด๊ฒ ๋๋ค.
c++ ์ฝ๋ :
//
// 10974_all_ permutation.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/02/27.
//
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string.h>
using namespace std;
vector<int> v;
bool visit[9];
int n;
void make_permu_dfs(){
if(v.size() == n){ //3
for(int i = 0; i < n; i++){
cout << v.at(i) << " ";
}
cout << endl;
return;
}else{
for(int i = 1; i <= n; i++){
if(visit[i] == false){
visit[i] = true;
v.push_back(i);
make_permu_dfs();
//cout << "pop " << v.back() << endl;
v.pop_back();
visit[i] = false;
}
}
}
}
int main(){
cin >> n;
memset(visit, false, sizeof(visit));
make_permu_dfs();
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 12865 ํ๋ฒํ ๋ฐฐ๋ญ knapsack ์๊ณ ๋ฆฌ์ฆ (0) | 2021.03.09 |
---|---|
[๋ฐฑ์ค] 11000 ๊ฐ์์ค ๋ฐฐ์ priority-queue, greedy (0) | 2021.03.07 |
[๋ฐฑ์ค] 2617 ๊ตฌ์ฌ ์ฐพ๊ธฐ DFS (0) | 2021.02.26 |
[๋ฐฑ์ค] 2003 ์๋ค์ ํฉ2 ํฌ ํฌ์ธํฐ (2) | 2021.02.26 |
[๋ฐฑ์ค] 2667 ๋จ์ง ๋ฒํธ ๋ถ์ด๊ธฐ BFS (0) | 2021.02.19 |
๋๊ธ