求大神指点一下关于简单dfs问题
题目描述:http://acm.sdut.我的代码:
程序代码:
#include<iostream> #include<stdlib.h> #include<string.h> #include<stdio.h> using namespace std; int flag; char f[3][103]; int visited[3][103]; int hang[4]={0,0,-1,1}; int lie[4]={1,-1,0,0}; int n; void dfs(int h,int l) { visited[h][l]=1; int i; for(i=0;i<=3;i++) { int h1=h+hang[i]; int l1=l+lie[i]; if(h1>=1&&h1<=2&&l1>=1&&l1<=n) { if(h1==1&&l1==n) { flag=1; return ; } else { if(f[h1][l1]=='.'&&visited[h1][l1]==0) { dfs(h1,l1); } } } } visited[h][l]=0; } void shuchu(); int main() { int zong ; cin>>zong; while(zong--) { int i,j; flag=0; for(i=0;i<=2;i++) for(j=0;j<=n;j++) f[i][j]='W'; memset(visited,0,sizeof(visited)); cin>>n; for(i=1;i<=2;i++) { for(j=1;j<=n;j++) cin>>f[i][j]; fflush(stdin); } //shuchu(); dfs(1,1); if(flag==1)cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; } void shuchu() { int i,j; for(i=1;i<=2;i++) { for(j=1;j<=n;j++) cout<<f[i][j]; cout<<endl; } }
答案总是wa,不知道错在哪里,求解析