zoukankan      html  css  js  c++  java
  • 算法:老鼠走迷宫问题

    算法:老鼠走迷宫问题(初)

    【写在前面】

      老鼠走迷宫问题的递归实现,是对递归思想的一种应用。

    【问题描述】

      给定一个二维数组,数组中2表示墙壁,0表示通路,由此数组可展示为一个迷宫图。给定入口位置和出口位置,判断之间是否存在通路并显示出走出迷宫的道路。  

    【代码】

    对题目的描述部分

    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;

    说明:

        1.给出用来描述迷宫信息的数组。

        2.给出入口和出口坐标。

    递归的实现部分

    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;
    }

    说明:

        1.第一句代码 migo[x][y]=1,意义何在呢?我们在开始处把它设为1,表示我们以此为轴开始朝四周移动,每到下一个点便再以之为轴,...不段进行判断,直达我们找到通路,即flag=1。但是我们需要明白的是,一旦我们沿某条路找不到通路时,最后一句代码

        便又将其还原为0,在对迷宫的所有道路探索后,我们可能会找到通路,那条路上的每一个元素便会被赋予1,如果都没有,那就不会。

        2.关于递归的思路:不断以某点为轴,向四处扩散,在找到出口点便停止递归。

    道路展示实现部分

    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;
    }
  • 相关阅读:
    MySQL中的错误
    [Err] 1064
    表单元素input 、button都要放进form里面
    【电商15】floor tab选项卡
    css三大特性——继承性:继承哪些样式
    border影响盒子大小-解决办法:
    padding影响&不影响盒子实际大小的情况
    【电商14】recom
    单行的多余文字,用省略号显示
    放精灵图的小盒子:_______;放字体图标:_______
  • 原文地址:https://www.cnblogs.com/MrSaver/p/5940386.html
Copyright © 2011-2022 走看看