#include<bits/stdc++.h> using namespace std; char a[1100][1100]; int vis[1100][1100]; int n, m; int dirt[8][2] = {{-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1},{0,-1},}; int main() { cin >> n >> m; int dx, dy; for(int i = 1; i <= n; i ++) { for(int j = 1; j <= m; j ++) { cin >> a[i][j]; if(a[i][j] == 'M') vis[i][j] = 1; else if(a[i][j] == 'H') { vis[i][j] = 1; for(int k = 0; k <8; k++) { dx = i+dirt[k][0]; dy = j+dirt[k][1]; if(dx >=1 && dx <= n && dy >=1 && dy <=m) vis[dx][dy] = 1; } } } } for(int i = 1; i <= n; i ++) { for(int j = 1; j <=m; j ++) { if(vis[i][j] != 1) { if(a[i][j] == 'L') { int flag = 0; for(int k = 0; k < 8; k ++) { dx = i+dirt[k][0]; dy = j+dirt[k][1]; if( dx < 1 || dx > n || dy <1 || dy >m || a[dx][dy] != 'L') { flag = 1; break; } } if(flag == 0) { vis[i][j] = 2; } for(int k = 0; k < 8; k ++) { dx = i+dirt[k][0]; dy = j+dirt[k][1]; if(dx >=1 && dx <= n && dy >=1 && dy <=m &&a[dx][dy] == 'G' && vis[dx][dy] == 0) vis[dx][dy] = 3; } } } } } for(int i = 1; i <= n; i ++) { for(int j = 1; j <=m; j ++) { if(vis[i][j] == 2 && a[i][j] == 'L') { a[i][j] = 'S'; } if(vis[i][j] == 3 && a[i][j] == 'G') { a[i][j] = 'N'; } if(vis[i][j] == 0 && a[i][j] == 'G') { a[i][j] = 'B'; } } } for(int i = 1; i <= n; i ++) { for(int j = 1; j <= m; j++) { printf("%c",a[i][j]); if(j == m)printf("\n"); } } return 0; }
全部评论
(1) 回帖