话说这道题就不能不深搜吗
#include<bits/stdc++.h>
using namespace std;
const int N=10;
vector<vector<bool> >b;
vector<bool> c;
vector<string> s;
string str;
int n;
int dx[8]={-1,-1,0,1,1,1,0,-1};
int dy[8]={0,1,1,1,0,-1,-1,-1};
void judge(int i,int j,int k){//i: x;j: y;k: dx/y[k]
if(i+dx[k]>=0&&i+dx[k]<n&&j+dy[k]>=0&&j+dy[k]<n&&i+dx[k]*7<n&&i+dx[k]*7>=0&&j+dy[k]*7<n&&j+dy[k]*7>=0){
if(s[i+dx[k]][j+dy[k]]=='y'&&s[i+dx[k]*2][j+dy[k]*2]=='i'&&s[i+dx[k]*3][j+dy[k]*3]=='z'&&s[i+dx[k]*4][j+dy[k]*4]=='h'&&s[i+dx[k]*5][j+dy[k]*5]=='o'&&s[i+dx[k]*6][j+dy[k]*6]=='n'&&s[i+dx[k]*7][j+dy[k]*7]=='g'){
b[i+dx[k]][j+dy[k]]=true;
b[i+dx[k]*2][j+dy[k]*2]=true;
b[i+dx[k]*3][j+dy[k]*3]=true;
b[i+dx[k]*4][j+dy[k]*4]=true;
b[i+dx[k]*5][j+dy[k]*5]=true;
b[i+dx[k]*6][j+dy[k]*6]=true;
b[i+dx[k]*7][j+dy[k]*7]=true;
}
}
return;
}
void search(){
for(int i=0;i<8;i++){
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
if(s[i][j]!='y') continue;
judge(j,k,i);
}
}
}
return;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>str;
s.push_back(str);
for(int j=0;j<n;j++){
c.push_back(false);
}
b.push_back(c);
c.clear();
}
search();
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(b[i][j]==false) cout<<'*';
else cout<<s[i][j];
}
cout<<endl;
}
return 0;
}
谢谢!