#include <vector>
#include <string>
#include <iostream>
using namespace std;
int n;
char check[8]="yizhong";
vector<string>v;
bool dfs(int i, int j, int p, int dir)
{
if(p==6 && (v[i][j]==check[p] || (char)(tolower(v[i][j]))==check[p])){
v[i][j]=toupper(v[i][j]);
return true;
}
if(dir==1)
{
if((v[i][j]==check[p] || (char)(tolower(v[i][j]))==check[p]) && i-1>=0 && dfs(i-1,j,p+1,1)==true){
v[i][j]=toupper(v[i][j]);
}
else
return false;
}
else if(dir==2)
{
if((v[i][j] == check[p] || (char)(tolower(v[i][j]))==check[p]) && i+1<n && dfs(i+1,j,p+1,2))
v[i][j]=toupper(v[i][j]);
else
return false;
}
else if(dir==3)
{
if((v[i][j]==check[p] || (char)(tolower(v[i][j]))==check[p]) && j-1>=0 && dfs(i,j-1,p+1,3))
v[i][j]=toupper(v[i][j]);
else
return false;
}
else if(dir==4)
{
if((v[i][j]==check[p] || (char)(tolower(v[i][j]))==check[p]) && j+1<n && dfs(i,j+1,p+1,4))
v[i][j]=toupper(v[i][j]);
else
return false;
}
else if(dir==5)
{
if((v[i][j]==check[p] || (char)(tolower(v[i][j]))==check[p]) && i-1>=0 && j-1>=0 && dfs(i-1,j-1,p+1,5))
v[i][j]=toupper(v[i][j]);
else
return false;
}
else if(dir==6)
{
if((v[i][j]==check[p] || (char)(tolower(v[i][j]))==check[p]) && i-1>=0 && j+1<n && dfs(i-1,j+1,p+1,6))
v[i][j]=toupper(v[i][j]);
else
return false;
}
else if(dir==7)
{
if((v[i][j]==check[p] || (char)(tolower(v[i][j]))==check[p]) && i+1<n && j-1>=0 && dfs(i+1,j-1,p+1,7))
v[i][j]=toupper(v[i][j]);
else
return false;
}
else if(dir==8)
{
if((v[i][j]==check[p] || (char)(tolower(v[i][j]))==check[p]) && i+1<n && j+1<n && dfs(i+1,j+1,p+1,8))
v[i][j]=toupper(v[i][j]);
else
return false;
}
}
int main()
{
scanf("%d",&n);
v.resize(n);
for(int i=0;i<n;i++)
cin>>v[i];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(v[i][j]=='y')
{
dfs(i,j,0,1);
dfs(i,j,0,2);
dfs(i,j,0,3);
dfs(i,j,0,4);
dfs(i,j,0,5);
dfs(i,j,0,6);
dfs(i,j,0,7);
dfs(i,j,0,8);
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(v[i][j]<97)
cout<<(char)tolower(v[i][j]);
else
cout<<"*";
}
cout<<endl;
}
return 0;
}
我的答案
*yizhong
gy******
n*i*****
o**z****
h***h***
z****o**
i*****n*
y******g
标准答案
*yizhong
gy******
n*i*****
o**z****
h***h***
z****o**
i*****n*
y******g