-
[모의 SW 역량테스트] 탈주범 검거SWexpertAcademy 2019. 9. 29. 21:49123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081#include<iostream>#include<queue>#include<utility>#include<cstring>using namespace std;int tc,n,m,R,C,L;int map[51][51];int d[51][51];bool dist[51][51];int dx[8][4] = {{0,0,0,0}, {0,0,1,-1},{1,-1,0,0},{0,0,0,0},{-1,0,0,0},{1,0,0,0},{1,0,0,0},{-1,0,0,0 }};int dy[8][4] = { {0,0,0,0}, {1,-1,0,0},{0,0,0,0},{1,-1,0,0},{0,1,0,0},{0,1,0,0},{0,-1,0,0},{0,-1,0,0}};int ans;bool canbe(int nx, int ny,int x, int y) {for (int i = 0; i < 4; i++) {if (map[nx][ny] == 0) continue;int sx = nx + dx[map[nx][ny]][i]; int sy = ny + dy[map[nx][ny]][i];if (sx >= 0 && sx < n && sy >= 0 && sy < m) {if (sx == x && sy == y) {return true;}}}return false;}void bfs(int x, int y) {queue<pair<int, int> > q;q.push(make_pair(x, y));int s = 1;dist[x][y] = true;d[x][y] = 1;if (L > 1) {while (!q.empty()) {x = q.front().first; y = q.front().second;int val = map[x][y];q.pop();for (int i = 0; i < 4; i++) {int nx = x + dx[val][i]; int ny = y + dy[val][i];if (nx >= 0 && nx < n && ny >= 0 && ny < m && map[nx][ny] != 0) {if (d[nx][ny] == 0 && canbe(nx, ny, x, y) && dist[nx][ny] == false) {d[nx][ny] = d[x][y] + 1;dist[nx][ny] = true;s++;if (d[nx][ny] < L) {q.push(make_pair(nx, ny));}}}}}}ans = s;}int main() {ios_base::sync_with_stdio(0);cin.tie(0);cin >> tc;for (int t = 1; t <= tc; t++) {cin >> n >> m >> R >> C >> L;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cin >> map[i][j];}}bfs(R, C);cout << '#' <<t<< ' ' << ans << '\n';memset(d, 0, sizeof(d));memset(dist, false, sizeof(dist));memset(map, 0, sizeof(map));}return 0;}http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
알고리즘에서 BFS,DFS 개념 자체는 어렵지않다.
어려운것은 조건을 잘보고 그에 따라 구현할줄알아야한다
이번에는 시간 L 이 1일때를 고려하지않아서 한번 틀린문제
'SWexpertAcademy' 카테고리의 다른 글
[모의 SW 역량테스트] 벌꿀채취 (0) 2019.10.17 보물상자 비밀번호 (0) 2019.10.15 1949. [모의 SW 역량테스트] 등산로 조성 (0) 2019.09.05 6731. 홍익이의 오델로 게임 (0) 2019.08.13 1226. [S/W 문제해결 기본] 7일차 - 미로1 (0) 2019.08.13