美文网首页
算法-迷宫问题(递归)

算法-迷宫问题(递归)

作者: Fallune立白 | 来源:发表于2017-08-23 18:54 被阅读0次

    迷宫问题:之前只用栈来实现,现在使用递归来实现。blog.csdn.net/feixiaoxing/article/details/6894981 

    #define N 6

    int MG[N][N]; // 迷宫数组,0表示墙壁,1表示联通

    int G_Value[N][N];  //用来记录是否走过, 走过是 #,没走过是原始值

    int check_pos_valid(int x,int y)

    {

    if((x<0||x>N-1)||(y<0||y>N-1))//出界

    {

    return 0;

    }

    if (MG[x][y] == 0)//墙

    {

    return 0;

    }

    if (G_Value[x][y] == '#')//已经走过

    {

    return 0;

    }

    return 1;//可以使用

    }

    void printPath()

    {

          for (int i = 0; i< N; i++ )

          {

                  for (int j = 0 ; j< N;j++ )

                  {

                          if(G_Value[i][j] == '#')

                         {

                          printf("#");//将走过的路线打印出来

                         }

                        else

                        {

                               printf(" ");

                        }

                       }

                      printf("\n");

               }

           printf("\n");

    }

    void FindPath(int x,int y)

    {

    if(check_pos_valid(x,y))

    {

    if(MG[x][y] == 2)//找到终点

    {

             G_Value[x][y] = '#';//已经走过

             printPath(); //走过的路线打印出来

               G_Value[x][y] = 0;    //终点这里仍然可以继续走

               return;

    }

    G_Value[x][y] = '#'; // 走过 mark

    FindPath(x-1, y);    //四个方向 分别是 上下左右

    FindPath(x, y+1);

    FindPath(x+1, y);

    FindPath(x, y-1);

    G_Value[x][y] = 0;   //如果四个方向都没有找到终点   这个position的寻找过程结束,回到上一个position,这个重新当做未走过

    }

    }

    相关文章

      网友评论

          本文标题:算法-迷宫问题(递归)

          本文链接:https://www.haomeiwen.com/subject/agdjdxtx.html