老鼠走迷宫

#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;
}
View Code
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;
}
View Code

最终代码:

//老鼠迷宫 左上右下 
#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;
} 
View Code
原文地址:https://www.cnblogs.com/helloworld2019/p/10353957.html