C语言迷宫代码分享

#include<stdio.h> #include<stdbool.h> #include <malloc.h> #define M 8 #define N 8 #define maxsize 100 int mg[M+2][N+2]= { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},//0 {1, 0, 0, 1, 0, 0, 0, 1, 0, 1},//1 {1, 0, 0, 1, 0, 0, 0, 1, 0, 1},//2 {1, 0, 0, 0, 0, 1, 1, 0, 0, 1},//3 {1, 0, 1, 1, 1, 0, 0, 0, 0, 1},//4 {1, 0, 0, 0, 1, 0, 0, 0, 0, 1},//5 {1, 0, 1, 0, 0, 0, 1, 0, 0, 1},//6 {1, 0, 1, 1, 1, 0, 1, 1, 0, 1},//7 {1, 1, 0, 0, 0, 0, 0, 0, 0, 1},//8 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},//9 }; //定义一个迷宫(二维数组),1表示有障碍物 typedef struct{ int i; int j; int di; }box; typedef struct{ box data[maxsize]; int top; }StType; bool mgpath(int xi , int yi, int xe, int ye) { int i, j, k, di, find; StType st; st.top = -1; st.top++; st.data[st.top].i=xi; st.data[st.top].j=yi; st.data[st.top].di = -1; mg[xi][yi] = -1; while(st.top > -1) { i = st.data[st.top].i; j = st.data[st.top].j; di = st.data[st.top].di; if(i == xe && j == ye) { printf("迷宫路径为:\n"); for(k = 0; k<=st.top; k++) { printf("\t(%d, %d)", st.data[k].i,st.data[k].j); if((k+1)%5 == 0) printf("\n"); } printf("\n"); return true; } find = 0; while(di<4 && find == 0) { di++; switch(di) { case 0:i = st.data[st.top].i-1; j = st.data[st.top].j; break; case 1:i = st.data[st.top].i; j = st.data[st.top].j+1; break; case 2:i = st.data[st.top].i+1; j = st.data[st.top].j; break; case 3:i = st.data[st.top].i; j = st.data[st.top].j-1; break; } if(mg[i][j] == 0) find=1; } if(find == 1) { st.data[st.top].di = di; st.top++; st.data[st.top].i = i; st.data[st.top].j = j; st.data[st.top].di = -1; mg[i][j] = -1; } else { mg[st.data[st.top].i][st.data[st.top].j] = 0; st.top--; } } return false; } int main() { if(!mgpath(1, 1, M, N)) printf("Null!"); }

下载地址:

文件名称:迷宫问题C语言代码

文件大小:2KB适用版本:无

更新日期:2016-10-17 22:03作者信息:小文

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程札记

数据库内部排序算法之两阶段多路归并排序算法实现

79530
来自专栏听雨堂

LegacyText的复制的Bug

        如果要动态复制一个LegacyText的文字,保持原来的中心位置,角度等,但修改其大小,发现有个别文字会偏离真正的中心位置,结果一番跟踪,发现问...

19670
来自专栏Aloys的开发之路

一个比较全面的java随机数据生成工具包

        最近,由于一个项目的原因需要使用一些随机数据做测试,于是写了一个随机数据生成工具,ExtraRanom。可以看成是Java官方Random类的扩...

30190
来自专栏程序员的诗和远方

30分钟QUnit入门教程

30分钟让你了解Javascript单元测试框架QUnit,并能在程序中使用。 QUnit是什么 QUnit是一个强大,易用的JavaScript单元测试框架,...

56590
来自专栏用户画像

H5 新增的input元素的类型

search类型用于搜索域,如站点搜索或Google搜索。search域显示为常规的文本域。

7230
来自专栏奇点大数据

【干货】Pytorch中的DataLoader的相关记录

DataLoader简单介绍 DataLoader是Pytorch中用来处理模型输入数据的一个工具类。通过使用DataLoader,我们可以方便地对数据进行...

1.7K60
来自专栏UE4技术专场

UE4 ReplicationGraph分析

ReplicationDriverClassName="/Script/ProjectName.ClassName"

75420
来自专栏企鹅号快讯

深度学习系列教程(六)tf.data API 使用方法介绍

"玩转TensorFlow与深度学习模型”系列文字教程,本周带来tf.data 使用方法介绍! 大家在学习和实操过程中,有任何疑问都可以通过学院微信交流群进行提...

35970
来自专栏IT开发技术与工作效率

Excel函数学习重点指南(官网)

12630
来自专栏北京马哥教育

Python入门之生成海贼王云图

本教程适合于有一定编程经验的同学,使用Python3,在Jupyter进行调试开发。 涉及的Python基础包括: 变量和函数的定义和使用 列表和字典等数据结构...

357100

扫码关注云+社区

领取腾讯云代金券