觉得写dfs太麻烦,没想到if全输出一堆星号
#include<bits/stdc++.h>
using namespace std;
char a[10001][10001],ans[10001][10001];
int main()
{
int n;
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++)
{
ans[i][j]='*';
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]>=1&&a[i][j+6]<=n)
{
if(a[i][j]=='y'&&a[i][j+1]=='i'&&a[i][j+2]=='z'&&a[i][j+3]=='h'&&a[i][j+4]=='o'&&a[i][j+5]=='n'&&a[i][j+6]=='g')
{
ans[i][j]='y',ans[i][j+1]='i',ans[i][j+2]='z',ans[i][j+3]='h',ans[i][j+4]='o',ans[i][j+5]='n',ans[i][j+6]='g';
}
if(a[i][j]=='g'&&a[i][j+1]=='n'&&a[i][j+2]=='o'&&a[i][j+3]=='h'&&a[i][j+4]=='z'&&a[i][j+5]=='i'&&a[i][j+6]=='y')
{
ans[i][j]='g',ans[i][j+1]='n',ans[i][j+2]='o',ans[i][j+3]='h',ans[i][j+4]='z',ans[i][j+5]='i',ans[i][j+6]='y';
}
}
if(a[i][j]>=1&&a[i+6][j]<=n)
{
if(a[i][j]=='y'&&a[i+1][j]=='i'&&a[i+2][j]=='z'&&a[i+3][j]=='h'&&a[i+4][j]=='o'&&a[i+5][j]=='n'&&a[i+6][j]=='g')
{
ans[i][j]='y',ans[i+1][j]='i',ans[i+2][j]='z',ans[i+3][j]='h',ans[i+4][j]='o',ans[i+5][j]='n',ans[i+6][j]='g';
}
if(a[i][j]=='g'&&a[i+1][j]=='n'&&a[i+2][j]=='o'&&a[i+3][j]=='h'&&a[i+4][j]=='z'&&a[i+5][j]=='i'&&a[i+6][j]=='y')
{
ans[i][j]='g',ans[i+1][j]='n',ans[i+2][j]='o',ans[i+3][j]='h',ans[i+4][j]='z',ans[i+5][j]='i',ans[i+6][j]='y';
}
}
if(a[i][j]>=1&&a[i+6][j+6]<=n)
{
if(a[i][j]=='y'&&a[i+1][j+1]=='i'&&a[i+2][j+2]=='z'&&a[i+3][j+3]=='h'&&a[i+4][j+4]=='o'&&a[i+5][j+5]=='n'&&a[i+6][j+6]=='g')
{
ans[i][j]='y',ans[i+1][j+1]='i',ans[i+2][j+2]='z',ans[i+3][j+3]='h',ans[i+4][j+4]='o',ans[i+5][j+5]='n',ans[i+6][j+6]='g';
}
if(a[i][j]=='g'&&a[i+1][j+1]=='n'&&a[i+2][j+2]=='o'&&a[i+3][j+3]=='h'&&a[i+4][j+4]=='z'&&a[i+5][j+5]=='i'&&a[i+6][j+6]=='y')
{
ans[i][j]='g',ans[i+1][j+1]='n',ans[i+2][j+2]='o',ans[i+3][j+3]='h',ans[i+4][j+4]='z',ans[i+5][j+5]='i',ans[i+6][j+6]='y';
}
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<<ans[i][j];
}
cout<<endl;
}
}