
#include<iostream> using namespace std; int migo[7][7]={ {2, 2, 2, 2, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 2}, {2, 0, 2, 0, 2, 0, 2}, {2, 0, 0, 0, 0, 2, 2}, {2, 2, 0, 2, 0, 2, 2}, {2, 0, 0, 0, 0, 0, 2}, {2, 2, 2, 2, 2, 2, 2}};//迷宫图 int startX=1,startY=1; int endX=5,endY=5; int flag=0; int find(int x,int y) { migo[x][y]=1; if(x==endX&&y==endY) flag=1; if(migo[x][y+1]==0&&flag!=1) find(x,y+1); if(migo[x][y-1]==0&&flag!=1) find(x,y-1); if(migo[x+1][y]==0&&flag!=1) find(x+1,y); if(migo[x-1][y]==0&&flag!=1) find(x-1,y); if(flag!=1) migo[x][y]=0; return flag; }

int main(int argc, char **argv) { int i,j; printf("显示迷宫: "); for(i=0;i<7;i++) { for(j=0;j<7;j++) if(migo[i][j]==2) printf("█"); else printf(" "); printf(" "); } if(find(startX,startY)==0) { printf(" 没有找到出口! "); } else { printf(" 显示路径: "); for(i=0;i<7;i++) { for(j=0;j<7;j++) { if(migo[i][j]==2) printf("█"); else if(migo[i][j]==1) printf("*"); else printf(" "); } printf(" "); } } return 0; }
最终代码:

//老鼠迷宫 左上右下 #include<iostream> using namespace std; int migo[7][7]={ {2, 2, 2, 2, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 2}, {2, 0, 2, 0, 2, 0, 2}, {2, 0, 0, 0, 0, 2, 2}, {2, 2, 0, 2, 0, 2, 2}, {2, 0, 0, 0, 0, 0, 2}, {2, 2, 2, 2, 2, 2, 2}};//迷宫图 int startx=1,starty=1; int endx=5,endy=5; int flag=0; int find(int x,int y){ migo[x][y]=1;//标记已经访问 if(x==endx&&y==endy) flag=1; if(migo[x-1][y]==0&&!flag) find(x-1,y); if(migo[x][y+1]==0&&!flag) find(x,y+1); if(migo[x+1][y]==0&&!flag) find(x+1,y); if(migo[x][y+1]==0&&!flag) find(x,y+1); if(!flag) migo[x][y]=0; //回溯 return flag; } int main() { int i,j; for(int i=0;i<7;i++){ for(int j=0;j<7;j++) if(migo[i][j]==2) cout<<"*"; else cout<<"$"; cout<<endl; } if(find(endx,endy)==0) cout<<"没出口"<<endl; else cout<<"成功"<<endl; }