这是我RE的0分代码:
#include<iostream>
using namespace std;
int num;
string k="yizhong";
int vis[105][105];
char map[105][105];
int dfs(int n,int m,int id,int f){
if(n<0||n>=num||m<0||m>=num)return 0;
if(map[n][m]==k[id]){
if(id==6){
vis[n][m]=1;
return 1;
}
switch(f){
case 1:if(dfs(n-1,m-1,id+1,f)){vis[n][m]=1;return 1;}else return 0;
case 2:if(dfs(n-1,m,id+1,f)){vis[n][m]=1;return 1;}else return 0;
case 3:if(dfs(n-1,m+1,id+1,f)){vis[n][m]=1;return 1;}else return 0;
case 4:if(dfs(n,m-1,id+1,f)){vis[n][m]=1;return 1;}else return 0;
case 5:
if(dfs(n-1,m-1,id+1,1))
vis[n][m]=1;
if(dfs(n-1,m,id+1,2))
vis[n][m]=1;
if(dfs(n-1,m+1,id+1,3))
vis[n][m]=1;
if(dfs(n,m-1,id+1,4))
vis[n][m]=1;
if(dfs(n,m+1,id+1,6))
vis[n][m]=1;
if(dfs(n+1,m-1,id+1,7))
vis[n][m]=1;
if(dfs(n+1,m,id+1,8))
vis[n][m]=1;
if(dfs(n+1,m+1,id+1,9))
vis[n][m]=1;
break;
case 6:if(dfs(n,m+1,id+1,f)){vis[n][m]=1;return 1;}else return 0;
case 7:if(dfs(n+1,m-1,id+1,f)){vis[n][m]=1;return 1;}else return 0;
case 8:if(dfs(n+1,m,id+1,f)){vis[n][m]=1;return 1;}else return 0;
case 9:if(dfs(n+1,m+1,id+1,f)){vis[n][m]=1;return 1;}else return 0;
}
}else return 0;
}
int main(){
cin>>num;
for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
cin>>map[i][j];
}
}
for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
dfs(i,j,0,5);
}
}
for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
if(vis[i][j]==1)cout<<map[i][j];
else cout<<"*";
}
printf("\n");
}
return 0;
}
8
qyizhong
gydthkjy
nwidghji
orbzsfgz
hhgrhwth
zzzzzozo
iwdfrgng
yyyygggg
*yizhong
gy******
n*i*****
o**z****
h***h***
z****o**
i*****n*
y******g
我在Dev上输入测试点1的信息是输出正确的,但是洛谷提交却全RE,有那位大佬能给本蒟蒻解释一下这个一般是什么问题吗?
顺便改一改本蒟蒻的代码,回复者必谢~