问题

分析

先让小哼往右边走,然后一直尝试下去,直到走不通的时候再回到这里。

代码实现

#include <stdio.h>
int book[51][51],n, m,a[51][51],p,q,min=999999;void dfs(int x, int y, int step) {int next[4][2] = { {0,1} ,//向右走{1,0},//向下走{-1,0},//向左走{0,-1} };//向上走int tx, ty, k;//判断是否到达小哈的位置if (x == p && y == q) {//更新最小值if (step < min) {min = step;}//printf("%d", step);return;//返回上一步,很重要}for (k = 0; k <= 3; k++) {//计算下一个点的坐标tx = x + next[k][0];ty = y + next[k][1];//判断是否越界if (tx<1 || tx>n || ty<1 || ty>m) {continue;}//判断该点是否是障碍物或是否已走过if (a[tx][ty] == 0 && book[tx][ty] == 0) {book[tx][ty] = 1;dfs(tx, ty, step + 1);book[tx][ty] = 0;}}return;}int main() {int   i, j, startx, starty;printf("你要输入几行几列的迷宫:");scanf_s("%d %d", &n, &m);printf("请输入迷宫(0表示空地,1表示障碍物):\n");//读入迷宫for(i=1;i<=n;i++)for (j = 1; j <= m; j++) {scanf_s("%d", &a[i][j]);}printf("请输入初始位置:");scanf_s("%d %d", &startx,&starty);book[startx][starty] = 1;//初始位置做标记printf("请输入小哈的位置:");scanf_s("%d %d", &p, &q);dfs(startx,starty,0);//从初始步数为0printf("%d", min);getchar(); getchar();return 0;}

输入

5 4
0 0 1 0
0 0 0 0
0 0 1 0
0 1 0 0
0 0 0 1
1 1 4 3

输出

7

输出

7

dfs之解救小哈-c语言相关推荐

  1. 解救小哈(dfs或bfs)

    题目描述: 有一天,小哈一个人去玩迷宫.但是方向感很不好的小哈很快就迷路了.小哼得知后便立即去解救无助的小哈.小哼当然是有备而来,已经弄清楚了迷宫的地图,现在小哼要以最快的速度去解救小哈.问题就此开始 ...

  2. 解救小哈——DFS算法举例

    一.问题引入 有一天,小哈一个人去玩迷宫.但是方向感不好的小哈很快就迷路了.小哼得知后便去解救无助的小哈.此时的小哼已经弄清楚了迷宫的地图,现在小哼要以最快的速度去解救小哈.那么,问题来了... 二. ...

  3. 啊哈算法-DFS解救小哈python版

    DFS 啊哈算法-解救小哈 maze_map = [] n,m = map(int,(input()).split()) maze_map = [input().split() for i in ra ...

  4. 解救小哈(dfs)-->改编自《啊哈!算法》

    [算法描述] 有一天,小哈一个人去玩迷宫.但是方向感不好的小哈很快就迷路了.小哼得知后便去解救无助的小哈.此时的小哼已经弄清楚了迷宫的地图,现在小哼要以最快的速度去解救小哈.那么,问题就此开始了... ...

  5. 啊哈算法——万能的搜索——解救小哈DFS

    迷宫由n行m列的单元格组成(n和m都小于50),每个单元格要么是空地,要么是障碍物.你的任务是帮助小哼找到一条从迷宫的起点通往小哈所在位置的最短路径. (障碍物不能走,且不可走到迷宫外) /*啊哈算法 ...

  6. 宽搜 c语言,啊哈算法之宽搜BFS解救小哈

    简述 本算法摘选自啊哈磊所著的<啊哈!算法>第四章第三节的题目--BFS算法再次解救小哈.文中代码使用C语言编写,博主通过阅读和理解,重新由Java代码实现了一遍,以此来理解BFS算法.关 ...

  7. (四)万能的搜索 —— 2. 解救小哈

    2. 解救小哈 任务: 迷宫由n行m列的单元格组成(n和m都小于等于50),每个单元格要么是空地,要么是障碍物. 任务是帮助小哼找到一条从迷宫的起点通往小哈所在位置的最短路径.注意障碍物是不能走的,当 ...

  8. 问题 F: 解救小哈

    题目描述 有一天,小哈一个去玩迷宫.但是方向感很不好的小哈很快就迷路了.小哼得知后便立即去解救无助的小哈.小哼当然是有备而来,已经弄清楚了迷宫地图,现在小哼要以最快速度去解救小哈.问题就此开始了-- ...

  9. 迷宫问题(解救小哈)

    文章目录 解救小哈 完整代码 读入数据 输出数据 总结 解救小哈 迷宫由n行m列的单元格组成(n和m都<=50),每个单元格要么是空地要么是障碍物.小哼要以最快的速度解救小哈,帮助小哼找到一条从 ...

最新文章

  1. linux下如何更新镜像源(ubuntu 10.04 为例),Ubuntu 10.04 更新源补充
  2. 从源码分析DEARGUI之交互添加和删除组件
  3. pytorch 按维取数据
  4. 【408预推免复习】操作系统之IO层次结构和IO控制方式
  5. python极简主义_XData: 为 Python 之禅写的极简主义数据验证工具
  6. arcgis server发布地图服务中文标注不能显示
  7. 网络编程(part4)--刷新缓冲区
  8. lock_sh 示例_带有示例的Python date __str __()方法
  9. Python问题3——爬虫编码问题
  10. java使用python爬虫,如何使用 Python 爬虫爬取 Java 题库?
  11. jdk版本导致的DB2异常:必需的字符转换器不可用。ERRORCODE=-4220, SQLSTATE=null
  12. JavaScript截取分割字符串
  13. 零中频接收机频率转换图_VHF跳频电台接收机射频前端的仿真设计
  14. CSS3 animation 动画用法介绍
  15. 初级第二旬04—六字准提观试题
  16. js获取当前农历时间
  17. Android之集成极光推送消息
  18. java重复代码重构_重构重复代码
  19. Geekban极客班 第三周
  20. 2020年淘宝年货销量数据监控可视化

热门文章

  1. m3u8转换到mp4 python_如何把m3u8格式转换成mp4格式?
  2. 世界上第一个科学家是谁
  3. iOS(iPhone,iPad))开发(Obje…
  4. 使用微信号开通检测软件的成功案例(一)
  5. echarts饼图中间默认内容显示与data数据显示切换
  6. 牛客网---软件开发专项练习 刷题笔记
  7. CSS使用小操作(隐藏滚动,实现三角行等...)
  8. Android流畅度总结
  9. 三星手机动态修改分辨率信息
  10. 【射影几何01】 射影几何介绍