队列的其本应用_迷官问题
问题:
利用队列的假出队,实现迷官问题寻解。
要求:
0 墙 1 路, 寻找最短路, 如果有多条,输出其中一条路。
main.c
#include <stdio.h>
#include <stdlib.h>#define M 5
int map[M+2][M+2];
int front = 0, rear = 0;
typedef struct Point_def{int x;int y;int pre;
}Point;
Point q[(M+2)*(M+2)];
typedef struct direction_def{int x;int y;
}Direction;
Direction direct[4] = {{-1,0}, {0,1}, {1,0}, {0, -1}
};
int isEmpty(){return front==rear?1:0;
}
void initMap(){int i, j;for (i=0; i<M+2; i++)for (j=0; j<M+2; j++){if (i == 0 || i == M+1 || j == 0 || j == M+1){map[i][j] = 0; continue;}scanf("%d", &map[i][j]);}
}
void enQueue(Point p){q[rear++] = p;
}
Point deQueue(){if (isEmpty()) exit(1);return q[front++];
}void findPath(int start_x, int start_y, int end_x, int end_y){int flag = 0;int d;int i, j;Point tmp_p1={start_x, start_y, -1};Point tmp_p2;enQueue(tmp_p1);while (!flag){tmp_p1 = deQueue();map[tmp_p1.x][tmp_p1.y] = -1;for (d=0; d<4; d++){i = tmp_p1.x + direct[d].x;j = tmp_p1.y + direct[d].y;if (map[i][j] == 1){tmp_p2.x = i; tmp_p2.y = j; tmp_p2.pre = front-1;enQueue(tmp_p2);}if (i == end_x && j == end_y){tmp_p2.x = i; tmp_p2.y = j; tmp_p2.pre = front-1;enQueue(tmp_p2);flag = 1; break;}}// end for }// end while
}// end findPathvoid printPath(){int k = rear-1;while (k != -1){printf("(%d,%d)\n", q[k].x, q[k].y);k = q[k].pre;}
}int main(){int flag = 0;int start_x = 1, start_y = 1;int end_x = 5, end_y = 5;initMap();findPath(start_x, start_y, end_x, end_y);printPath();return 0;
}
转载于:https://www.cnblogs.com/laohaozi/p/8266613.html
队列的其本应用_迷官问题相关推荐
- 老鼠走迷宫php算法,C语言经典算法 - 老鼠走迷官(一)
C语言经典算法 - 老鼠走迷官(一) 说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下 ...
- C++经典算法题-老鼠走迷官(一)
5.Algorithm Gossip: 老鼠走迷官(一) 说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法 ...
- C++经典算法题-老鼠走迷官(二)
6.Algorithm Gossip: 老鼠走迷官(二) 说明 由于迷宫的设计,老鼠走迷宫的入口至出口路径可能不只一条,如何求出所有的路径呢? 解法 求所有路径看起来复杂但其实更简单,只要在老鼠走至出 ...
- 经典算法大全51例——56.老鼠走迷官
经典算法大全51例--5&6.老鼠走迷官 算法目录合集 地址 说明 题目以及个人题解 说明 题目 原理分析 问题① 原理 代码实现--Java 问题② 原理 代码实现--Java 相关题目其他 ...
- rabbitmq 拉取消息太慢_面试官:消息队列这些我都要问
作者:mousycoder segmentfault.com/a/1190000021054802 消息队列连环炮 项目里怎么样使用 MQ 的? 为什么要使用消息队列? 消息队列有什么优点和缺点? k ...
- mq集群要建传输队列吗_面试官:消息队列这些我必问!
作者:mousycoder segmentfault.com/a/1190000021054802 消息队列连环炮 项目里怎么样使用 MQ 的? 为什么要使用消息队列? 消息队列有什么优点和缺点? k ...
- 保存数组_面试官:讲一讲你对据结构——数组、链表、栈、队列的理解
一.解释定义 1. 数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.再简单描述一下:数据结构就是描述对象间逻辑关系的学科. 如果还是不太清楚下面会举例说明的. 2. 数据存储结 ...
- websphere mq 查看队列中是否有数据_如果面试官再问你消息队列,就把这篇甩给他!...
★★★建议星标我们★★★ 公众号改版后文章乱序推荐,希望你可以点击上方"Java进阶架构师",点击右上角,将我们设为★"星标"!这样才不会错过每日进阶架构文章呀 ...
- mysql怎么用_面试官都是这样发问的,连环冲锋炮,看你怎么抵挡(上)
本内容来源于和尚 16 年毕业的学长,先在 58,后阿里,如今准备跳槽了,以下内容为他的最近面试经历 我最近从大厂离职之后在合肥呆了个把月,之前已经准备了半个多月,从7月底开始投简历面试,目前是jav ...
最新文章
- 水管工游戏 (深搜)
- 使用XML记录数据的一些体会
- 利用MySQL数据库来处理中英文取首字母排序
- matlab r2012a win10,vs2010和Matlab R2012a 混合编程
- Cannot resolve method ‘call(java.lang.String, org.apache.flink.table.api.ApiExpression)‘
- 启动NameNode和DataNode
- FlashFXP列表参数错误解决方法
- php转换编码去掉bom,UTF-8编码怎么去掉BOM头?
- 不要打我,不要打我,不要打我啊啊
- 获取properties文件的内容的几种方式
- nohup rabbitmq python
- paip.解决中文url路径的问题图片文件不能显示
- Linux基本操作和基础命令(Linux修改IP地址以及修改网卡地址)
- [计算机英语]句子翻译(只含unit1.3.4.5.7.8.9.12)
- SLAM AR 技术与应用
- 第2章:Android的编译环境--build系统
- PDF页面太大要如何才能缩小?
- 华为gt3智能跑步计划体验:心率监测、gps轨迹、训练计划
- 三十二位计算机游戏推荐,这32种课间游戏不重样,总有一款适合您和学生!| 推荐收藏...
- python3 爬煎蛋ooxx妹子图