深度搜索算法是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。

dfs.h
#ifndef __DFS_H_
#define __DFS_H_  #define u32 unsigned int
#define u16 unsigned short
#define s32 int#define TRUE     1
#define FALSE       0#define ROW        5
#define COLUMN  5#define ROAD   0
#define WALL    1
#define PASS    2typedef struct
{u32 x;u32 y;
}loc_in_maze;void print_maze(void);void  print_path(void);void dfs_maze(u32 loc_x,u32 loc_y);#endif

dfs.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <memory.h>
#include "dfs.h"loc_in_maze path[25];u32 path_flag = 0;const s32 d_x[4]={0,1,0,-1};
const s32 d_y[4]={1,0,-1,0};u32 maze[ROW][COLUMN]={ROAD,WALL,ROAD,ROAD,ROAD,ROAD,WALL,ROAD,WALL,ROAD,ROAD,ROAD,ROAD,ROAD,ROAD,ROAD,WALL,WALL,WALL,ROAD,ROAD,ROAD,ROAD,WALL,ROAD};void print_maze(void)
{u32 i,j;for(i=0;i<ROW;i++){for(j=0;j<COLUMN;j++){printf("%d",maze[i][j]);}printf("\n");}printf("******\n");
}void  print_path(void)
{u32 i;printf("(0,0)");for(i=0;i<path_flag;i++){printf("->(%d,%d)",path[i].x,path[i].y);}printf("\n");
}void dfs_maze(u32 loc_x,u32 loc_y)
{int k;for(k=0;k<4;k++){if(loc_x+d_x[k]>=0&&loc_x+d_x[k]<5&&loc_y+d_y[k]>=0&&loc_y+d_y[k]<5&&maze[loc_x+d_x[k]][loc_y+d_y[k]]==0){maze[loc_x+d_x[k]][loc_y+d_y[k]]=2;path[path_flag].x=loc_x+d_x[k];path[path_flag].y=loc_y+d_y[k];path_flag++;print_maze();if(loc_x+d_x[k]==4&&loc_y+d_y[k]==4){print_path();getch();exit(0);}else{dfs_maze(loc_x+d_x[k],loc_y+d_y[k]);}maze[loc_x+d_x[k]][loc_y+d_y[k]]=0;path[path_flag].x=0;path[path_flag].y=0;path_flag--;}}
}int main(void)
{dfs_maze(0,0);getch();return 0;
}

深度搜索算法C语言实现--以走迷宫为例相关推荐

  1. c语言自动按键脚本,C语言键盘控制走迷宫小游戏

    本文实例为大家分享了C语言键盘控制走迷宫小游戏的具体代码,供大家参考,具体内容如下 在看了<啊哈C语言>之后想写一个游戏demo 游戏的截图 首先是启动界面 然后是初始化 接下来是键盘操控 ...

  2. C语言小项目——走迷宫

    C语言小项目--走迷宫 设计方向: 1.定义二维字符数组作为迷宫 2.定义变量记录老鼠的位置 3.判定移动后位置的变化 4.记录游戏时长 5.判定到达终点的条件 总体设计: 1.用不同字符代表墙.老鼠 ...

  3. C语言实现老鼠走迷宫(附源码)

    CSDN源码下载:C语言实现老鼠走迷宫.zip 1.需求分析   利用二维数组创建一个随机迷宫或者自定义迷宫,再在迷宫中找到一条从起点到终点的路径,并用图形界面显示. 2.概要设计 3.详细设计 输入 ...

  4. c语言大作业走迷宫,基于C语言实现简单的走迷宫游戏

    本文实例讲述了C语言实现简单的走迷宫游戏的方法,代码完整,便于读者理解. 学数据结构时用"栈"写的一个走迷宫程序,实际上用到双向队列,方便在运行完毕后输出经过的点. #includ ...

  5. C语言实现一个走迷宫小游戏(深度优先算法)

    补充一下,先前文章末尾给出的下载链接的完整代码含有部分C++的语法(使用Dev-C++并且文件扩展名为.cpp的没有影响),如果有的朋友使用的语言标准是VC6的话可能不支持,所以在修改过后再上传一版, ...

  6. c语言大作业走迷宫,C语言笔记07_小游戏设计——“走迷宫”

    C语言07 小游戏设计--走迷宫 目标: 我们要设计一个完整的小游戏"走迷宫".你将可以通过控制键盘上的"W"."S"."A&qu ...

  7. C语言案例之走迷宫(Ubuntu)

    配置文件 1.在windows中把getch.h放入共享文件夹 getch.h内容: #ifndef GETCH_H #define GETCH_H#include <termios.h> ...

  8. c语言bfs算法走迷宫,使用广度优先算法(BFS)走迷宫

    前面介绍广度优先算法的时候提及了多次走迷宫,我们就真正的走一次迷宫试试! 要求如下: 输入给出迷宫矩阵的行数和列数,并给出迷宫(使用点 (.) 表示路,使用星 (*) 表示障碍物,使用S表示起点,T表 ...

  9. c语言作业迷宫代码,用C语言写的走迷宫的代码

    //走迷宫 普通走法 #include #include #include #include #define Height 25 //迷宫的高度,必须为奇数 #define Width 25 //迷宫 ...

最新文章

  1. Java报表工具技巧--如何在Style Report创建用户自定义报表模板
  2. 了解关于Hadoop的12个事实
  3. 树莓派进阶之路 (019) - 树莓派通过filezilla,samba与PC文件共享(转)
  4. Asp.Net就业课之案例实践第二次课
  5. php如何操作mysql数据库代码_php如何操作mysql数据库的类(附代码)
  6. 知到大学生创业基础(上海理工大学)期末考试试题汇总(含答案)
  7. SH7218T拆解手记(7)Clockworkmod recovery的编译
  8. 前端学习--使用canvas实现圆饼图
  9. 清明节 java_清明节习俗
  10. 基于Androidstudio餐厅点餐选座系统
  11. Vue3 + elementplus 分页组件英文改为中文
  12. 4 年 Java 程序员十面阿里终拿下 offer,评级 P6+ 年薪 30-40w 无股票
  13. 前端Ajax实现预览TXT文档(兼容UTF-8,ANCII,Unicode)
  14. 语义网简介(三)—RDF与RDF Schema
  15. 记录农行H5开户流程
  16. 一个简单的LED程序
  17. 从键盘输入一个数n,判断是不是一个质数(质数是只能被1和它自身整除的数)。
  18. JAVA编译报错:A JNI error has occurred, please check your installation and try again
  19. Spring_day02
  20. python中range()函数

热门文章

  1. 用计算机对视频进行剪裁和编辑,爱剪辑怎么裁剪视频片段?
  2. python循环代码优化技巧_记一次优化python循环代码逻辑的过程
  3. 阿里云企业认证时不要让员工做个人认证的原因
  4. 【《Real-Time Rendering 3rd》 提炼总结】(二) 第二章 · 图形渲染管线 The Graphics Rendering Pipeline
  5. 《Sony Vegas Pro 12标准教程》—— 2.6 添加背景音乐
  6. 用计算解决科学难题,用算法让生活变得更好
  7. 谷歌突然宣布!百度、滴滴懵了
  8. 基于TextField实现通用搜索组件
  9. 2017国庆假期学习总结
  10. 怎么查服务器域名 mac系统,苹果6s肿么查看服务器域名