经典迷宫问题求解,编译已经通过并且大作业验收,笔者总共写过两次迷宫,第一次是在C语言期末小作业使用递归写的,第二次在暑假小学期使用BFS算法写的,给初入C语言的小伙伴借鉴一下吧(笔者当时写一个小破迷宫花了一周,因为实在找不到参考,网上的代码很杂很乱,绝大部分不能编译,对新手很不友好,各种定义新手很难看不懂,所以我当时就有想法想着给C语言初学者一个好的学习代码!可以少走弯路!) 创建迷宫无非就是两步,第一构建迷宫,第二走迷宫,创建迷宫呢,得先想好怎么存储迷宫,最简单的办法就是数组,然后怎么构建迷宫呢?笔者时间有限,在这不展开论述,大家可以看看其他视频就知道了,这里我也给出全部代码和大家共同学习进步。走迷宫的方法也很多,递归,栈,队列,BFS,DFS都可以,笔者使用两种办法走迷宫。
首先就是笔者第一次写的递归走迷宫,代码如下,代码十分简略,当时水平有限,也就只能靠自己使用递归写出一个简简单单的迷宫,第一份代码比较简单,再菜靠自己也能看懂。
#include
#include
#include
int createMaze(); //创建随机迷宫
int createFreeMaze(); //创建自定义迷宫
void createWall(); //创建迷宫外墙
int visit(int row2, int col2) ;
int startI = 1, startJ = 1; // 入口
int success = 0;
//迷宫数组
int maze[100][100];
int row = 0;
int col = 0;
int i,j;
//迷宫矩阵,2代表墙壁,0代表通道
//创建迷宫外墙
void createWall()
{
//创建迷宫外墙,第一行、第一列、最后一行、最后一列均为墙壁
for( i = 0; i
for( j = 1; j
for( i = 1; i
printf("迷宫第%d行,共%d格: ",i,col-3);
for( j = 2; j
printf("迷宫第%d行,共%d格:",i,col-2);
for( j = 1; j
int i, j,choice;
printf("请输入迷宫行数row(0 |