有bug
#include <iostream> using namespace std; int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0}; int startx,starty,endx,endy,w,l; char puzzle[10][10];//最多支持10*10迷宫 bool walked[10][10]; struct point { int x; int y; }; point path[100]; void dfs(int x,int y,int cnt) { path[cnt].x=x;//记录路径 path[cnt].y=y; cnt++; walked[x][y]=true;//标记走过 if(x==endx&&y==endy)//走到终点 { for(int i=0;i<cnt-1;i++) cout<<path[i].x<<","<<path[i].y<<"->"; cout<<path[cnt-1].x<<","<<path[cnt-1].y<<endl; return; } bool t=false; for(int k=0;k<4;k++) { x+=dx[k],y+=dy[k]; if(puzzle[x][y]!='1'&&walked[x][y]==false&&x>=0&&y>=0&&x<w&&y<l)//可以走 { t=true; dfs(x,y,cnt); walked[x][y]=false; } } if(!t)//无路可走 return; } int main() { cin>>w>>l; for(int i=0;i<w;i++) for(int j=0;j<l;j++) { cin>>puzzle[i][j]; //0可以走,1障碍,@起点,.终点 if(puzzle[i][j]=='@') { startx=i; starty=j; } if(puzzle[i][j]=='.') { endx=i; endy=j; } } dfs(startx,starty,0); }
标签:10,cnt,int,puzzle,迷宫,endy,&& From: https://www.cnblogs.com/weinan030416/p/17085776.html