解救小哈

小哈在一个(m * n)大小的迷宫(0 ⇐ m, n ⇐ 50)里迷路了。在迷宫中,每个单元格要么是空地,要么是障碍物。现在要找到从起点到小哈位置的最短步数。

思路:

使用队列储存扩展,扩展时每发现一个点就将这个点储存到队列中。当一个点扩展完毕,将其出队。

源码:

#include<stdio.h>struct queue {int x;int y;int s;
};int main() {struct queue que[2500];int tx, ty;int next[4][2] = { {0, 1}, {1, 0}, {0, -1}, {-1, 0} };int a[51][51];int book[51][51] = {0};int m, n;int q, p;int i, j;int flag = 0;int head = 0;int tail = 0;int k;//初始化队列que[tail].x = 1;que[tail].y = 1;que[tail].s = 0;tail++;book[1][1] = 1;printf("请输入地图大小:");scanf("%d %d", &n, &m);printf("请输入地图:\n");for (i = 1; i <= n; i++) {for (j = 1; j <= m; j++) {scanf("%d", &a[i][j]);}}printf("请输入起点:");scanf("%d %d", &que[head].x, &que[head].y);printf("请输入终点:");scanf("%d %d", &q, &p);while (head < tail) {for (k = 0; k < 4; k++) {// 寻找下一步tx = que[head].x + next[k][0];ty = que[head].y + next[k][1];if (tx < 1 || tx > n || ty < 1 || ty > m) {        //判断出界continue;}if (a[tx][ty] == 1 || book[tx][ty] == 1) {           //判断是否是障碍物或已走过continue;}que[tail].x = tx;                                    //入队que[tail].y = ty;que[tail].s = que[head].s + 1;tail++;book[tx][ty] = 1;if (tx == q && ty == p) {                            //判断是否到达终点flag = 1;break;}}if (flag == 1) {break;}head++;}printf("最短步数:%d\n", que[tail - 1].s);return 0;
}

啊哈算法—解救小哈(广度优先搜索)相关推荐

  1. 解救小哈——广度优先搜索bfs

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

  2. 算法复习|广度优先搜索BFS

    广度优先搜索BFS 文章目录 广度优先搜索BFS HDU-1253 胜利大逃亡 HDU-1241 Oil Deposits 算法思想 从初始状态S开始,利用一定的规则,生成所有下一层的状态,依次入队 ...

  3. 数据结构与算法--图的广度优先搜索 (BFS)

    广度优先搜索即是 一种"地毯式"层层推进的搜索策略,即先查找离起始顶点最近的,然后是次近的,依次往外搜索. BFS解决的最短路径问题. 采用BFS进行遍历的话,需要依赖队列,先进先 ...

  4. 《阿哈!算法》4-1不撞南墙不回头 4-2 解救小哈——深度优先搜索

    深度优先搜索关键在于解决"当下该如何做".至于"下一步如何做"则与当下该如何做"是一样的. 深度优先搜索模型: void dfs(int step){ ...

  5. 广度优先搜索_计算机入门必备算法——广度优先遍历搜索

    1.  序言 又很久没有学习了,上次学到哈希表又称散列表的相关知识,这次我们学习一种新的数据结构来建立网络模型.这种数据结构被称作图.首先,我们先应该先了解一下什么是图,其次学习第一种图的算法,这种图 ...

  6. 小白的算法初识课堂(part6)--广度优先搜索

    学习笔记 学习书目:<算法图解>- Aditya Bhargava 文章目录 图简介 图是啥 广度优先搜索 寻找最短路径 队列 实现图 实现算法 运行时间 图简介 今天是五一,假如我要从家 ...

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

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

  8. 《算法图解》学习笔记(六):图和广度优先搜索(附代码)

    欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...

  9. 12032 解救小哈

    标题: 解救小哈 标签: 搜索 广度优先搜索 详情: 有一天,小哈一个去玩迷宫.但是方向感很不好的小哈很快就迷路了.小哼得知后便立即去解救无助的小哈.小哼当然是有备而来,已经弄清楚了迷宫地图,现在小哼 ...

最新文章

  1. java selector 源码_基于selector的源码分析和理解、思想和应用实践
  2. java编程东西好多记不住_课程总结
  3. Python实现获取IP代码
  4. WINDOWS蓝屏照片
  5. 基于java的薪资工资管理系统
  6. Review Board了解
  7. 崩坏3mmd中的渲染技术研究
  8. java程序 扑克牌概率_java扑克牌洗牌程序,求抽可以抽出特定牌的次数
  9. 分享一个强大的网盘搜索平台-猪猪盘
  10. 圆角半角数据库_数据库使用技巧――SQL 全角与半角切换_MySQL
  11. 智慧天气系统 - 可视化大屏(Echarts)管理系统(HTTP(S)协议)物联网平台(MQTT协议)
  12. Microsoft Edge 嗯...无法访问此页面解决办法
  13. 装X指南之用 Xposed 把某宝资产改成100w
  14. 【转载】VLOOKUP函数多条件查询 VLOOKUP三个条件查询
  15. cookie 以及百度统计,google analytics对cookie的使用
  16. 相机光学(二十)——三原色与白平衡
  17. 学习 Rust Futures - Future 和 Stream
  18. OSChina 周一乱弹 ——看见别人的工作台眼神都发光
  19. matlab对常见特殊数据文件读取:edf、cnf、bdf、tdms、e
  20. 逐步攻略:使用Matlab音频系统工具箱创建自己的VST插件,让音乐编程在Nashville崭新绽放

热门文章

  1. 【转】悟空,你变成避孕套吧,今天为师要亲自收拾这个女妖精
  2. 吴忠军 - 养生之道 老人健康长寿的大秘诀
  3. 使用Cent Browser+Aria2+Bilibili Envolved下载b站视频--保姆级安装步骤
  4. 万洲金业平台上炒黄金亏损了怎么办?
  5. erewrwerwer
  6. verilog/vhdl调试工具-Debussy使用教程
  7. 长隆大马戏机器人_腾讯长隆打造智能主题酒店 小Q机器人全面部署智慧旅游
  8. JRE和JDK的区别(笔记)
  9. 一键搞定身份证复印 多功能应用全面满足工作组需求
  10. HBuilderX运行到手机或模拟器提示没有找到设备