#include <iostream>
#include <cstring>
using namespace std;
char p[200][200];
char mark[200][200];
int n;
int dx[8] = {1,0,-1,0,1,-1,-1,1};
int dy[8] = { 0,-1,0,1,1,1,-1,-1 };
int counter = 0;
char biao[8] = { '*','y','i','z','h','o','n','g' };
bool dfs(int x, int y,int z) {
counter++;
if (x>n||y>n||x<=0||y<=0) {
return false;
}
else if (p[x][y]!=biao[counter]) {
return false;
}
else if (p[x][y] == biao[counter] && counter == 7) {
mark[x][y] = biao[counter];
return true;
}
bool judge=dfs(x + dx[z], y + dy[z], z);
if (judge == true) {
mark[x][y] = p[x][y];
return true;
}
}
int main()
{
memset(mark, '*', sizeof mark);
cin >> n;
for(int i=1;i<=n;i++)
for (int j = 1; j <=n; j++) {
cin >> p[i][j];
}
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++) {
for (int k = 0; k < 8; k++) {
if(p[i][j]=='y')
dfs(i, j, k);
counter = 0;
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cout << mark[i][j];
}
cout << "\n";
}
return 0;
}
在本地运行的第一个测试点是正确的 但是提交显示错误