注意:
//这个可以缩减重复代码,用角标即可
char p[9]={‘y’,‘i’,‘z’,‘h’,‘o’,‘n’,‘g’};
using namespace std;
#include <iostream>
char a[105][105];
//这个可以缩减重复代码,用角标即可
char p[9]={'y','i','z','h','o','n','g'};
int flag[105][105];
int dx[8]={0,1,0,-1,1,1,-1,-1};
int dy[8]={1,0,-1,0,1,-1,1,-1};
int main ()
{
int n,i,j;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
//以y开头的进行判断
if(a[i][j]==p[0])
{
//八个方向遍历一下
for(int fx=0;fx<8;fx++)
{
//判断是否在界限里面
if(i+dx[fx]*6>=0&&i+dx[fx]*6<n&&j+dy[fx]*6>=0&&j+dy[fx]*6<n)
{
int ff=0;
//之后的七个遍历一下是不是匹配上
for(int f=0;f<7;f++)
{
if(a[i+dx[fx]*f][j+dy[fx]*f]!=p[f])
ff=1;
}
if(ff==0)
{
for(int f=0;f<7;f++)
{
flag[i+dx[fx]*f][j+dy[fx]*f]=f+1;
}
}
}
}
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(flag[i][j]==0)
{
cout<<'*';
}
else
{
cout<<p[flag[i][j]-1];
}
}
cout<<endl;
}
}