开O2全RE,不开O2就AC,问问原因
#include<bits/stdc++.h>
using namespace std;
int n;
char c[105][105];
bool ans[105][105]={0};
string w="yizhong";
int dfs(int i,int j,int num,int d){
if(i<1 || i>n || j<1 || j>n){
return 0;
}
if(c[i][j]==w[num-1]){
if(num==7){
ans[i][j]=1;
return 1;
}else{
switch(d){
case 9:
if(dfs(i+1,j,num+1,1)){
ans[i][j]=1;
}if(dfs(i-1,j-1,num+1,2)){
ans[i][j]=1;
}if(dfs(i-1,j,num+1,3)){
ans[i][j]=1;
}if(dfs(i,j+1,num+1,4)){
ans[i][j]=1;
}if(dfs(i,j-1,num+1,5)){
ans[i][j]=1;
}if(dfs(i+1,j-1,num+1,6)){
ans[i][j]=1;
}if(dfs(i+1,j+1,num+1,7)){
ans[i][j]=1;
}if(dfs(i-1,j+1,num+1,8)){
ans[i][j]=1;
}break;
case 1:
if(dfs(i+1,j,num+1,d)){
ans[i][j]=1;
return 1;
}else return 0;
case 2:
if(dfs(i-1,j-1,num+1,d)){
ans[i][j]=1;
return 1;
}else return 0;
case 3:
if(dfs(i-1,j,num+1,d)){
ans[i][j]=1;
return 1;
}else return 0;
case 4:
if(dfs(i,j+1,num+1,d)){
ans[i][j]=1;
return 1;
}else return 0;
case 5:
if(dfs(i,j-1,num+1,d)){
ans[i][j]=1;
return 1;
}else return 0;
case 6:
if(dfs(i+1,j-1,num+1,d)){
ans[i][j]=1;
return 1;
}else return 0;
case 7:
if(dfs(i+1,j+1,num+1,d)){
ans[i][j]=1;
return 1;
}else return 0;
case 8:
if(dfs(i-1,j+1,num+1,d)){
ans[i][j]=1;
return 1;
}else return 0;
}
}
}else{
return 0;
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>c[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
dfs(i,j,1,9);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(ans[i][j]==1){
cout<<c[i][j];
}else{
cout<<"*";
}
}cout<<endl;
}
return 0;
}