【题解-信息学奥赛一本通】1215:迷宫 题目1215迷宫题目描述一天Extense在森林里探险的时候不小心走入了一个迷宫迷宫可以看成是由n×n的格点组成每个格点只有2种状态.和#前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上Extense想要从点A走到点B问在不走出迷宫的情况下能不能办到。如果起点或者终点有一个不能通行(为#)则看成无法办到。输入第1行是测试数据的组数k后面跟着k组输入。每组测试数据的第1行是一个正整数n(1≤n≤100)表示迷宫的规模是n×n的。接下来是一个n×n的矩阵矩阵中的元素为.或者#。再接下来一行是4个整数ha,la,hb,lb描述A处在第ha行, 第la列B处在第hb行, 第lb列。注意到ha,la,hb,lb全部是从0开始计数的。接着输出R行S列字母矩阵。输出k 行每行输出对应一个输入。能办到则输出“YES”否则输出“NO”。时空限制1s / 64MB样例输入2 3 .## ..# #.. 0 0 2 2 5 ..... ###.# ..#.. ###.. ...#. 0 0 4 0样例输出YES NO注意点不要回溯会超时本题只需要验证可行即可。代码#includebits/stdc.husingnamespacestd;constintN10010;intt,n,sx,sy,ex,ey,dx[6]{-1,1,0,0},dy[6]{0,0,-1,1};charg[N][N];boolvis[N][N],f;voiddfs(intx,inty){if(f)return;if(xexyey){ftrue;puts(YES);return;}for(inti0;i4;i){intxxxdx[i],yyydy[i];if(xx0xnyy0yyn!vis[xx][yy]g[xx][yy].){vis[xx][yy]true;dfs(xx,yy);//不要回溯会超时}}}intmain(){cint;while(t--){cinn;for(inti0;in;i)for(intj0;jn;j)cing[i][j];cinsxsyexey;if(g[sx][sy]#||g[ex][ey]#)puts(NO);else{memset(vis,false,sizeofvis);vis[sx][sy]true;ffalse;dfs(sx,sy);if(!f)puts(NO);}}return0;}结果