https://www.acmicpc.net/problem/15918
15918번: 랭퍼든 수열쟁이야!!
세 자연수 n, x, y가 주어진다. (2 ≤ n ≤ 12, 1 ≤ x < y ≤ 2n, 1 ≤ y-x-1 ≤ n)
www.acmicpc.net
[ 문제풀이 ]
1. n, x, y를 입력받고, arr[ x ] = arr [ y ] = y - x - 1로 초기화합니다.
2. 백트래킹을 이용하여 수열의 자리를 채우고, 수열이 완성되면 ans++를 해줍니다.
3. ans를 출력합니다.
[ 소스코드 ]
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 | #include<iostream> using namespace std; int n, x, y; int arr[25]; int visited[13]; int ans; void dfs(int level) { if (level == 2 * n + 1) { ans++; return; } if (arr[level]) dfs(level + 1); for (int i = 1; i <= n; i++) { if (visited[i] == 0 && level + i + 1 <= 2 * n && arr[level] == 0 && arr[level + i + 1] == 0) { visited[i] = 1; arr[level] = i; arr[level + i + 1] = i; dfs(level + 1); visited[i] = 0; arr[level] = 0; arr[level + i + 1] = 0; } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> x >> y; arr[x] = arr[y] = y - x - 1; visited[y - x - 1] = 1; dfs(1); cout << ans; } | cs |
'백준' 카테고리의 다른 글
[ 백준 ] 22116번 - 창영이와 퇴근 (C++) (0) | 2023.09.12 |
---|---|
[ 백준 ] 3755번 - Double Queue (C++) (0) | 2023.09.11 |
[ 백준 ] 16940번 - BFS 스페셜 저지 (C++) (0) | 2023.09.09 |
[ 백준 ] 16936번 - 나3곱2 (C++) (0) | 2023.09.08 |
[ 백준 ] 11567번 - 선진이의 겨울 왕국 (C++) (0) | 2023.09.07 |