• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: 其他
  • 标签: 代码  迷宫  C语言  

资源简介

该程序作用为对于输入的n*n的迷宫(用1表示障碍,0表示可通行),从入口(1,1)出发,找出一条通往(n,n)的最短路径,若有多条路径长度相同 ,则随机输出其中一条。

资源截图

代码片段和文件信息

/*该程序作用为对于输入的n*n的迷宫(用1表示障碍,0表示可通行),从入口(11)出发,找出一条通往(nn)的最短路径,若有多条路径长度相同 ,则随机输出其中一条。
例如:若n为5,迷宫为
01101
00001
01011
11001
11100
则输出为(*表示路径中的点) 

███████
█**██  ██
█******  ██
█  █**███
███****██
████****█
███████

*/ 
#include

#define maxnum 10000

int n;
int move[4][2]={{01}{10}{-10}{0-1}};//move数组表示可以移动的四个方向 
int time[51][51];//time数组存放到达某一点的最少时间(假设每走一步所用时间为1); 
char maze[51][51];//maze数组用于存放迷宫地图 
struct xy{
int xy;
}prestep[51][51];//prestep数组用于记录到达某一点的前一步的坐标,如prestep[x][y].x里面存放路径中(xy)的前一个点的横坐标,
                       //prestep[x][y].y存放相应的纵坐标。 

void getmaze(void);
void search(int xint yint prexint prey);
int check(int xint y);
void getpath(int xint y);

int main()
{
int ij;  
  
    getmaze();
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
         time[i][j]=maxnum;//先将时间都设为最大值 
    search(1100);
    if(prestep[n][n].x==0)
     printf(“NO WAY!\n“);//无法走出迷宫 
    else{
     getpath(nn);
     system(“chcp 437“);
     for(i=0;i<=n+1;i++){
     for(j=0;j<=n+1;j++)
     if(maze[i][j]==‘1‘)
printf(“%c“219);
else if(maze[i][j]==‘*‘)
printf(“**“);
else
printf(“  “) ;
     printf(“\n“);
}

}
    
 } 
 void getmaze(void)//读入迷宫地图 
 {
  int ij;
  char c;
 
  printf(“请输入迷宫大小n:\n

评论

共有 条评论