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 条评论
登录 后参与评论

相关文章

来自专栏烙馅饼喽的技术分享

我的CMS开发记-3 只要是人就会犯错误,只要是软件就会有BUG,即使他是nhibernate

      nhibernate1.2支持access数据库。但是我一直在用sqlserver开发。现在已经有了一点样子,于是我心血来潮,将数据库切换为Acce...

2758
来自专栏web编程技术分享

【php增删改查实例】第十节 - 部门管理模块(新增功能)

1406
来自专栏小樱的经验随笔

【批处理学习笔记】第三课:简单批处理命令(2)

cls 命令     清除屏幕。执行该命令后,屏幕上的所有信息都被清除,光标重新定位至屏幕左上角。 REM 和 :: REM为注释命令,一般用来给程序加上注...

3114
来自专栏IT可乐

mybatis 详解(四)------properties以及别名定义

  上一篇博客我们介绍了mybatis的增删改查入门实例,我们发现在 mybatis-configuration.xml 的配置文件中,对数据库的配置都是硬编码...

1936
来自专栏Taylor技术日志

Laravel-Excel导出功能文档

可以在闭包中修改一些属性,很多属性可在配置文件中设置默认值 config/excel.php

74049
来自专栏流媒体

Android RTMP推流之MediaCodec硬编码二(RTMPDump推流)

在前面的两篇文章中:Android RTMP推流之MediaCodec硬编码一(H.264进行flv封装)介绍了如何MediaCodec进行H264硬编码,然后...

1285
来自专栏PHP技术

令PHP初学者的困惑的10个知识点

【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭 的,所以要从上一页面取得提交过来得变量要使 用$_GET[...

2835
来自专栏Java3y

Struts2【配置】

前言 上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值...

2575
来自专栏Golang语言社区

Golang入门-- 2D的图形库学习

1、获取源码并安装到本地: 首先要安装git (传送门) : https://git-scm.com/download/ 然后就可...

3024
来自专栏林德熙的博客

resharper 自定义代码片 常用功能

我们在做一件事前,需要先做工具,工具好,最后我们做事也快。这个过程需要的时间也是值得的。 我们在C#下使用的工具,有一个神器,Resharper,他可以帮修改代...

911

扫码关注云+社区