#include<iostream>#include<stack>#include<malloc.h>using namespace std;struct SHAGUO...{ int x; int y; };int **array;int outx=0,outy=0;//出口坐标stack<SHAGUO>shaguo;void Creat(int sum)...{ int i,j; array=(int **)malloc((sum+2)*sizeof(int *)); for( i=0;i<=sum+1;i++) array[i]=(int *)malloc((sum+2)*sizeof(int)); i=0;/**//*下面把迷宫四周设成墙 ,0 代表墙,1代表路*/ for(j=0;j<=sum+1;j++) ...{ array[i][j]=0; array[j][i]=0; } i=sum+1; for(j=0;j<=sum+1;j++) ...{ array[i][j]=0; array[j][i]=0; } cout<<"请输入迷宫,0代表墙,1代表路,3代表出口,入口默认为(1,1)"<<endl; for(i=1;i<=sum;i++) for(j=1;j<=sum;j++) cin>>array[i][j]; for(i=1;i<=sum;i++) for(j=1;j<=sum;j++) ...{ if(array[i][j]==3) ...{ outx=i; outy=j; } } if(!(outx||outy)) ...{ cout<<"没有出口!程序将采用默认出口( "<<sum<<" , "<<sum<<" )"<<endl; outx=sum; outy=sum; array[sum][sum]=1; }}void ok(int num)...{ cout<<endl<<"走出来啦!"<<endl; SHAGUO shaguo1; int x,y; while(!shaguo.empty()) ...{ shaguo1=shaguo.top(); x=shaguo1.x; y=shaguo1.y; array[x][y]=4; shaguo.pop(); } array[outx][outy]=4; for(x=1;x<=num;x++) ...{ for(y=1;y<=num;y++) ...{ if(array[x][y]==4) cout<<''<<' '; else cout<<'*'<<' '; } cout<<endl; } system("pause"); exit(0);}void bad()...{ cout<<endl<<"没有路!"<<endl; system("pause"); exit(0);}void go(int num)...{ SHAGUO shaguo2,shaguo1; shaguo2.x=1; shaguo2.y=1; shaguo.push(shaguo2); int X=1,Y=1; int come=1;//探索方向 while(1&&!shaguo.empty()) ...{ shaguo1=shaguo.top(); X=shaguo1.x; Y=shaguo1.y; switch(come) ...{ case 1://向下 ...{ X=X+1; if(array[X][Y]&&array[X][Y]!=2)//不是走下面上来的 ...{ if(X==outx&&Y==outy) ok(num); shaguo2.x=X; shaguo2.y=Y; array[X][Y]=2; shaguo.push(shaguo2); come=1; } else ...{ come++; } }break; case 2://向右 ...{ Y=Y+1; if(array[X][Y]&&array[X][Y]!=2) ...{ if(X==outx&&Y==outy) ok(num); shaguo2.x=X; shaguo2.y=Y; shaguo.push(shaguo2); array[X][Y]=2; come=1; } else ...{ come++; } }break; case 3: ...{ X=X-1; if(array[X][Y]&&array[X][Y]!=2) ...{ if(X==outx&&Y==outy) ok(num); shaguo2.x=X; shaguo2.y=Y; shaguo.push(shaguo2); array[X][Y]=2; come=1; } else ...{ come++; } }break; case 4://向右 ...{ Y=Y-1; if(array[X][Y]&&array[X][Y]!=2) ...{ if(X==outx&&Y==outy) ok(num); shaguo2.x=X; shaguo2.y=Y; shaguo.push(shaguo2); array[X][Y]=2; come=1; } else ...{ come=1; array[X][Y]=0; shaguo.pop(); if(!shaguo.empty()) ...{ shaguo1=shaguo.top(); if(shaguo1.x==1&&shaguo1.y==1) bad(); } else bad(); } }break; } } bad();}void main()...{ cout<<"请输入迷宫大小,只需输入迷宫的维数,8即是8*8的迷宫"<<endl; int sum; cin>>sum; Creat(sum); go(sum); }