啊哈算法—解救小哈(广度优先搜索)
解救小哈
小哈在一个(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;
}
啊哈算法—解救小哈(广度优先搜索)相关推荐
- 解救小哈——广度优先搜索bfs
有一天,小哈一个去玩迷宫.但是方向感很不好的小哈很快就迷路了.小哼得知后便立即去解救无助的小哈.小哼当然是有备而来,已经弄清楚了迷宫地图,现在小哼要以最快速度去解救小哈.问题就此开始了-- 迷宫由n行 ...
- 算法复习|广度优先搜索BFS
广度优先搜索BFS 文章目录 广度优先搜索BFS HDU-1253 胜利大逃亡 HDU-1241 Oil Deposits 算法思想 从初始状态S开始,利用一定的规则,生成所有下一层的状态,依次入队 ...
- 数据结构与算法--图的广度优先搜索 (BFS)
广度优先搜索即是 一种"地毯式"层层推进的搜索策略,即先查找离起始顶点最近的,然后是次近的,依次往外搜索. BFS解决的最短路径问题. 采用BFS进行遍历的话,需要依赖队列,先进先 ...
- 《阿哈!算法》4-1不撞南墙不回头 4-2 解救小哈——深度优先搜索
深度优先搜索关键在于解决"当下该如何做".至于"下一步如何做"则与当下该如何做"是一样的. 深度优先搜索模型: void dfs(int step){ ...
- 广度优先搜索_计算机入门必备算法——广度优先遍历搜索
1. 序言 又很久没有学习了,上次学到哈希表又称散列表的相关知识,这次我们学习一种新的数据结构来建立网络模型.这种数据结构被称作图.首先,我们先应该先了解一下什么是图,其次学习第一种图的算法,这种图 ...
- 小白的算法初识课堂(part6)--广度优先搜索
学习笔记 学习书目:<算法图解>- Aditya Bhargava 文章目录 图简介 图是啥 广度优先搜索 寻找最短路径 队列 实现图 实现算法 运行时间 图简介 今天是五一,假如我要从家 ...
- 啊哈算法-DFS解救小哈python版
DFS 啊哈算法-解救小哈 maze_map = [] n,m = map(int,(input()).split()) maze_map = [input().split() for i in ra ...
- 《算法图解》学习笔记(六):图和广度优先搜索(附代码)
欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...
- 12032 解救小哈
标题: 解救小哈 标签: 搜索 广度优先搜索 详情: 有一天,小哈一个去玩迷宫.但是方向感很不好的小哈很快就迷路了.小哼得知后便立即去解救无助的小哈.小哼当然是有备而来,已经弄清楚了迷宫地图,现在小哼 ...
最新文章
- jenkins+svn搭建
- jQuery 分类导航菜单条点击变色
- 将军令:数据安全平台建设实践
- 测试用例设计方法_黑盒测试——测试用例设计方法
- win7怎么在计算机找文件夹选项,解决WIN7工具菜单没有文件夹选项/文件夹和搜索选项变灰色...
- 重庆理工大学计算机考研分数,重庆理工大学历年考研分数线汇总[2012-2021]
- graham算法 java_凸包Graham Scan算法实现
- 【OpenCV3】直线拟合--FitLine()函数详解
- ubuntu下载神器---xdm
- 《悲伤逆流成河》影评
- 编程题——合法括号序列
- 作为一个准研究生,怎样才能在研究生阶段不虚度?
- MQTT协议之Mosquitto
- MP4测试视频URL地址分享,亲测有效。可用于测试HTML5播放器效果。
- SD卡家族纵览(SD miniSD microSD SDIO)
- 移动网站性能优化:网页加载技术概览
- 文献阅读07期:智网中动态电价对太阳能板普及的影响
- 网络运维基础知识梳理
- 路遥的《人生》——文摘
- 教师计算机能力提升工程总结,博达中学校教师信息技术应用能力提升工程工作总结...
热门文章
- opencv学习日记——娜扎小姐姐与猫咪的图像融合,超美哈哈哈
- 7-4 房产税费计算2022 (12 分)
- mysql 字段被截断_msyql存储数据时字段被截断
- 基于Jenkins和Kubernetes流水线实现应用的自动发版
- [oeasy]python0131_[趣味拓展]各种符号_汉语拼音符号_中文全角英文字母_中文全角标点
- 普元框架-那些年一起走过的坑
- 【python做接口测试的学习记录day9——pytest自动化测试框架之yaml数据驱动封装】
- 流年暗换,是什么偷走了我们的爱情
- UNI-APP安卓本地打包详细教程(保姆级)
- 网络协议之TCP和UDP