老鼠走迷宫1

说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径。
解法老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,无法前进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止,这是递回的基本题,请直接看程式应就可以理解。

#include <stdio.h>
#include <stdlib.h>

int visit(int ,int);
int a[9][9]={{2, 2, 2, 2, 2, 2, 2, 2, 2},
             {2, 0, 0, 0, 0, 0, 0, 0, 2},
             {2, 0, 2, 2, 0, 2, 2, 0, 2},
             {2, 0, 2, 0, 0, 2, 0, 0, 2},
             {2, 0, 2, 0, 2, 0, 2, 0, 2},
             {2, 0, 0, 0, 0, 0, 2, 0, 2},
             {2, 2, 0, 2, 2, 0, 2, 2, 2},
             {2, 0, 0, 0, 0, 0, 0, 0, 2},
             {2, 2, 2, 2, 2, 2, 2, 2, 2}};
int starti=1,startj=1;
int endi=7,endj=7;
int flag=0;

int main()
{
   int i,j;
   printf("显示迷宫:\n");
   for(i=0;i<9;i++)
   {
       for(j=0;j<9;j++)
        {
            if(a[i][j]==2) printf("█");
            else printf("  ");
        }
        printf("\n");
   }
   if(visit(starti,startj)==0)
    printf("there is no way!\n");
   else
   {
       printf("显示路径:\n");
       for(i=0;i<9;i++)
        {
          for(j=0;j<9;j++)
           {
             if(a[i][j]==2) printf("█");
             else if(a[i][j]==1) printf("◇");
             else  printf("  ");
           }
          printf("\n");
        }
   }

   return 0;
}

int visit(int i,int j)
{
    a[i][j]=1;
    if(i==endi&&j==endj)
      flag=1;

    if(flag!=1&&a[i+1][j]==0)  visit(i+1,j);
    if(flag!=1&&a[i][j-1]==0)  visit(i,j-1);
    if(flag!=1&&a[i-1][j]==0)  visit(i-1,j);
    if(flag!=1&&a[i][j+1]==0)  visit(i,j+1);

    if(flag==0)
        a[i][j]=0;
    return flag;

}

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前任三最近非常火了,票房蹭蹭往上升,昨天也去电影院看了,想起了我的前任,她是一名女程序员,为了让我学好java,她...
    ToEnd阅读 3,153评论 0 4
  • 说明由于迷宫的设计,老鼠走迷宫的入口至出口路径可能不只一条,如何求出所有的路径呢?解法求所有路径看起来复杂但其实更...
    gtxe阅读 1,150评论 0 0
  • 傍晚,我和爸爸去打羽毛球,灯还没亮。到了一片宽阔的空地,我手一抛,羽毛球甩到了头的上方,眼睛跟着羽毛球,用...
    刘泽毓爸爸阅读 1,599评论 0 2
  • 哚呤阅读 754评论 0 1
  • 感恩是周五啦,时间过得很快。 每天匆匆,感恩每天环卫师傅打算满地的落叶,我们可以享受干净的环境。感恩最近查逆行,带...
    刘静华_2de8阅读 929评论 0 0