본문 바로가기

백준 알고리즘/DFS18

마법사 상어와 파이어스톰 C++ https://www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net #include #include #include #include const int MAX = 65; int a[MAX][MAX]; int visited[MAX][MAX]; int n, q, l; int temp_num = 0; struct Ice { int x, y; }; Ice ic[4] = { { -1,0 },{ 1,0 },{ 0,1 },{ 0,-1 } }; int pow_.. 2021. 2. 28.
원판 돌리기 C++ #include #include using namespace std; const int MAX = 51; int n, m, t; int x, d, k; int circle[MAX][MAX]; struct MOVE { int x, y; }; MOVE mv[4] = { { 0, 1 },{ 0, -1 },{ -1, 0 },{ 1, 0 } }; int temp[MAX][MAX]; int visited[MAX][MAX]; bool same = false; void copycircle() { memset(temp, -1, sizeof(temp)); for (int i = 1; i > k; //회전 if (d == 0) rotate_r(); else rotate_l(); //printcircle(); //수가 남았는.. 2021. 2. 28.
백준 감시 C++ #include #include #include #include using namespace std; const int MAX = 9; int n, m; int map[MAX][MAX]; int copys[MAX][MAX]; vector camera; int visited[MAX][MAX][4]; int answer = 987654321; vector angle; struct Move { int x, y; }; Move mv[4] = { {0,1}, {-1,0}, {0,-1}, {1,0} }; void copymap() { for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { map[i][j] = copys[i][j]; } } } void calans.. 2019. 10. 19.
백준 사다리 조작 C++ #include #include using namespace std; int map[31][11]; int n, m, h; int linenum; bool flag; void dfs(int j, int count) { if (flag == true) return; if (count == linenum) { flag = true; for (int i = 1; i 1 && map[j][index - 1] == 1) index--; } if (index != i) { flag = false; break; } } return; } for (int x = j; x < h; x++) { for (int y = 1; y < n; y++) { if (map[x][y - 1]!= 1 && map[x][y]!=1 && m.. 2019. 10. 19.