样例左下角没有 提交RE
#include<bits/stdc++.h>
using namespace std;
char s[8]={'0','y','i','z','h','o','n','g'};
char a[1001][1001];
int n;
int dx[9]={0,0,0,1,1,1,-1,-1,-1};
int dy[9]={0,1,-1,0,-1,1,0,-1,1};
bool b[1001][1001];
bool dfs(int x,int y,int t,int d)
{
if(t==8)
return true;
x+=dx[d];y+=dy[d];
if(a[x][y]==s[t+1])
dfs(x,y,t+1,d);
else
return false;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j]=='y')
for(int k=1;k<=8;k++)
if(dfs(i,j,1,k))
{
int x=i,y=j;
b[x][y]=true;
for(int p=1;p<=8;p++)
{
b[x+dx[k]][y+dy[k]]=true;
x+=dx[k];y+=dy[k];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
if(b[i][j])
cout<<a[i][j];
else
cout<<'*';
cout<<endl;
}
return 0;
}