noj-算法实验-迷宫问题
#includeusing namespace std; int v[23][23]; void init_v() { for(int i=1;i<=20;i++) for(int j=1;j<=20;j++) { char c; cin>>c; if(c=='X') v[i][j]=1; else v[i][j]=0; } } void clear_v() { for(int j=1;j<=20;j++) for(int i=1;i<=20;i++) { v[j][i]= 0; } } int ax,ay; //起点 int bx,by; //终点 int flag =0; void dfs(int x,int y) { if(x==bx&&y==by) flag =1; else if(v[x-1][y]==1&&v[x+1][y]==1&&v[x][y-1]==1&&v[x][y+1]==1) ; else{ v[x][y]=1; if(v[x-1][y]==0) dfs(x-1,y); if(v[x+1][y]==0) dfs(x+1,y); if(v[x][y-1]==0) dfs(x,y-1); if(v[x][y+1]==0) dfs(x,y+1); } } int main() { for(int i=0;i<=22;i++) { v[0][i] =1; //墙 v[i][0] =1; v[21][i] =1; v[i][21] =1; } int n; cin>>n; for(int i=0;i >ax>>ay>>bx>>by; ax+=1; ay+=1; bx+=1; by+=1; v[ax][ay]=1; init_v(); dfs(ax,ay); if(flag == 1) cout<<"Yes"<<"n"; else cout<<"No"<<"n"; flag =0; clear_v(); } //system("pause"); }



