#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <vector>
#include <iostream>
#include <string>
using namespace std;
int n;
string target = "yizhong";
int dx,dy;
int dir[][2]={{1,1},{1,-1},{-1,-1},{-1,1},{1,0},{-1,0},{0,-1},{0,1}};
struct node{
int x,y;
}pos[200];
bool DFS(int i,int j,node c[],int k,int finder,vector<vector<bool>> &vis,vector<vector<char>> &matrix){
if(finder==7){
for(int m=0;m<7;m++)
vis[c[m].x][c[m].y]=true;
return true;
}
if(i<0||j<0||i>=n||j>=n){
return false;
}
if(matrix[i][j]!=target[finder]){
return false;
}
else{
dx=i+dir[k][0];
dy=j+dir[k][1];
if(finder==6||matrix[dx][dy]==target[finder+1]){
pos[finder].x=i;
pos[finder].y=j;
if(DFS(dx,dy,pos,k,finder+1,vis,matrix))return true;
}
}
}
void print(vector<vector<bool>> &vis,vector<vector<char>> &matrix,int n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(vis[i][j]==true){
cout<<matrix[i][j];
}
else cout<<'*';
}
cout<<endl;
}
}
int main(){
cin>>n;
vector<vector<char>> matrix(n,vector<char>(n));
vector<vector<bool>> vis(n,vector<bool>(n,false));
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>matrix[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(matrix[i][j]=='y'){
for(int k=0;k<8;k++){
int dx1=i+dir[k][0];
int dy1=j+dir[k][1];
if(matrix[dx1][dy1]=='i'){
DFS(i,j,pos,k,0,vis,matrix);
}
}
}
}
}
print(matrix,vis,n);
return 0;
}
如题,求助