[백준 1799번] 비숍
2017. 7. 26. 23:44ㆍ알고리즘/백준
반응형
소스코드
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #include <iostream> using namespace std; int n, board[11][11], Max = 0, visit[21] = { 0, }, visit_1[21] = { 0, }; void white(int a, int b, int cnt) { if (cnt > Max) Max = cnt; if (b >= n) { a++; if (a % 2 == 0) b = 0; else b = 1; } if (a >= n) return; if (visit[a + b] == 0 && board[a][b] == 1 && visit_1[10+a-b]==0) { visit[a + b] = 1; visit_1[10 + a - b] = 1; white(a, b+2, cnt + 1); visit[a + b] = 0; visit_1[10 + a - b] = 0; } white(a, b + 2, cnt); } void black(int a, int b, int cnt) { if (cnt > Max) Max = cnt; if (b >= n) { a++; if (a % 2 == 0) b = 1; else b = 0; } if (a >= n) return; if (visit[a + b] == 0 && board[a][b] == 1 && visit_1[10 + a - b] == 0) { visit[a + b] = 1; visit_1[10 + a - b] = 1; black(a, b + 2, cnt + 1); visit[a + b] = 0; visit_1[10 + a - b] = 0; } black(a, b + 2, cnt); } int main() { int sum = 0; cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> board[i][j]; } } white(0, 0, 0); sum = Max; Max = 0; black(0, 1, 0); sum += Max; cout << sum << '\n'; return 0; } | cs |
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 9934번] 완전 이진 트리 (0) | 2017.07.27 |
---|---|
[백준 1182번] 부분집합의 합 (0) | 2017.07.27 |
[백준 2493번] 탑 (0) | 2017.07.26 |
[백준 2879번] 코딩은 예쁘게 (0) | 2017.07.25 |
[백준 9465번] 스티커 (0) | 2017.07.24 |