啊哈算法—解救小哈(广度优先搜索)
解救小哈
小哈在一个(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 解救小哈
标题: 解救小哈 标签: 搜索 广度优先搜索 详情: 有一天,小哈一个去玩迷宫.但是方向感很不好的小哈很快就迷路了.小哼得知后便立即去解救无助的小哈.小哼当然是有备而来,已经弄清楚了迷宫地图,现在小哼 ...
最新文章
- java selector 源码_基于selector的源码分析和理解、思想和应用实践
- java编程东西好多记不住_课程总结
- Python实现获取IP代码
- WINDOWS蓝屏照片
- 基于java的薪资工资管理系统
- Review Board了解
- 崩坏3mmd中的渲染技术研究
- java程序 扑克牌概率_java扑克牌洗牌程序,求抽可以抽出特定牌的次数
- 分享一个强大的网盘搜索平台-猪猪盘
- 圆角半角数据库_数据库使用技巧――SQL 全角与半角切换_MySQL
- 智慧天气系统 - 可视化大屏(Echarts)管理系统(HTTP(S)协议)物联网平台(MQTT协议)
- Microsoft Edge 嗯...无法访问此页面解决办法
- 装X指南之用 Xposed 把某宝资产改成100w
- 【转载】VLOOKUP函数多条件查询 VLOOKUP三个条件查询
- cookie 以及百度统计,google analytics对cookie的使用
- 相机光学(二十)——三原色与白平衡
- 学习 Rust Futures - Future 和 Stream
- OSChina 周一乱弹 ——看见别人的工作台眼神都发光
- matlab对常见特殊数据文件读取:edf、cnf、bdf、tdms、e
- 逐步攻略:使用Matlab音频系统工具箱创建自己的VST插件,让音乐编程在Nashville崭新绽放