四十pts
其余点WA
感激不尽
#include<bits/stdc++.h>
using namespace std;
int n;
char mp[105][105],tel[8]={' ','y','i','z','h','o','n','g'};
bool flag[105][105];
void check(int x,int y,int f,int step)
{
if(x<1||x>n||y<1||y>n) return;
if(step==8)
{
if(f==1)
{
for(int i=1;i<=7;i++)
flag[x][y+i]=true;
return;
}
if(f==2)
{
for(int i=1;i<=7;i++)
flag[x-i][y+i]=true;
return;
}
if(f==3)
{
for(int i=1;i<=7;i++)
flag[x-i][y]=true;
return;
}
if(f==4)
{
for(int i=1;i<=7;i++)
flag[x-i][y-i]=true;
return;
}
if(f==5)
{
for(int i=1;i<=7;i++)
flag[x][y-i]=true;
return;
}
if(f==6)
{
for(int i=1;i<=7;i++)
flag[x+i][y-i]=true;
return;
}
if(f==7)
{
for(int i=1;i<=7;i++)
flag[x+i][y]=true;
return;
}
if(f==8)
{
for(int i=1;i<=7;i++)
flag[x+i][y-i]=true;
return;
}
}
if(mp[x][y]!=tel[step]) return;
if(f==1)
check(x,y-1,1,step+1);
if(f==2)
check(x+1,y-1,2,step+1);
if(f==3)
check(x+1,y,3,step+1);
if(f==4)
check(x+1,y+1,4,step+1);
if(f==5)
check(x,y+1,5,step+1);
if(f==6)
check(x-1,y+1,6,step+1);
if(f==7)
check(x-1,y,7,step+1);
if(f==8)
check(x-1,y+1,8,step+1);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>mp[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
check(i,j,1,1);
check(i,j,2,1);
check(i,j,3,1);
check(i,j,4,1);
check(i,j,5,1);
check(i,j,6,1);
check(i,j,7,1);
check(i,j,8,1);
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(flag[i][j]==true)
cout<<mp[i][j];
else
cout<<'*';
}
cout<<endl;
}
return 0;
}