https://www.acmicpc.net/problem/10974
음..
next_permutation??이라는 함수가 있습니다.
알고리즘 헤더에 있는 함수인데..
이거 쓰면 엄청 쉽게 풀 수 있는데!!!!!!!!!!
기초가 튼튼해야합니다!
dfs로 해봅시다!!!!!!!!!!!!!!!!!!!!!!
그냥 배열을 n의 최대값만큼 만들어서
방문체크하면서 dfs하면 끝입니당!!!!!!!!!!!!
이해안가실 떈 디버깅이 짱짱맨!!
풀코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include <iostream> #include <vector> #include <algorithm> #include <queue> #include <string.h> using namespace std; #define ll long long #define MOD (ll)1e15 #define MAX_SIZE (int)1e5 #define mp make_pair #define INF 987654321 #define pii pair<int, int> //ios::sync_with_stdio(false); cin.tie(0); bool visit[10]; int output[10]; void f(int num, int d, int n) { output[d] = num; if (d == n) { for (int i = 1; i <= n; i++) cout << output[i] << ' '; cout << '\n'; return; } for (int i = 1; i <= n; i++) { if (visit[i]) continue; visit[i] = 1; f(i, d + 1, n); visit[i] = 0; } } int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { visit[i] = 1; f(i, 1, n); visit[i] = 0; } return 0; } | cs |
'알고리즘 > 탐색' 카테고리의 다른 글
[10216] Count Circle Groups (0) | 2017.08.10 |
---|---|
[10451] 순열 사이클 (0) | 2017.07.27 |
[1058] 친구 (0) | 2017.07.20 |
[1941] 소문난 칠공주 (1) | 2017.07.01 |
[2146] 다리 만들기 (2) | 2017.05.23 |