这个题的长度真的有点长,我直接放图片吧

这个题又是一个和谐的搜索,找到yizhong的y就开始8面搜索,遇见正确的字母就继续搜索,不正确就果断放弃,果然又是一个和谐的搜索呢。
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
string a[300],shu[300];
int aa[8]={0,-1,-1,-1,0,1,1,1},bb[8]={1,1,0,-1,-1,-1,0,1},z,a1,a2;
string s="yizhong";
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
shu[i]+='0';//初始化
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(a[i][j]=='y')//开头出现了!
{
for(int x=0;x<8;x++)//8向搜索
{
z=0;
a1=i;
a2=j;
for(int ss=0;ss<6;ss++)//yizhong去掉y还有6位
{
a1+=aa[x];
a2+=bb[x];
if(a1<0||a1>n||a2<0||a2>n)//越界了
{
z=1;
}
if(a[a1][a2]!=s[ss+1])//不匹配
{
z=1;
}
if(z==1)
{
break;
}
}
a1=i;
a2=j;
if(z==0)//如果找到了一个完整的yizhong
{
for(int i=0;i<7;i++)//替换
{
shu[a1][a2]=a[a1][a2];
a1+=aa[x];
a2+=bb[x];
}
}
}
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(shu[i][j]=='0')处理‘*’
{
shu[i][j]='*';
}
}
}
for(int i=0;i<n;i++)//输出
{
cout<<shu[i]<<endl;
}
return 0;
}
这个写的有点水,没看懂的话可以去隔壁的dgdger大佬哪里,我实在没找到其他可讲的地方了。