迷宫问题 (下) 使用Quene 实现

Unity中队列(Queue)的简单使用 queue----队列:容器,像一个单向的隧道,从一端(尾部)进入, 从另一端(头部)出去,先进的先出,类似高速公路上的车流通过一个隧道。 阅读详情

Quene 的实现方法是 广度优先搜索方法。

使用队列一层一层的将路线记录到队列中, 然后新加入的元素指向之前的元素。

 

struct 
{
	int i,j;
	int pre;
}Qu[MAXSTACKSIZE];
int front = -1, rear = -1;

int findPathByQueue(int in_x, int in_y, int out_x, int out_y)
{
	int A[10][10] = {
		{1,1,1,1,1,1,1,1,1,1},
		{1,0,0,1,0,0,0,1,0,1},
		{1,0,0,1,0,0,0,1,0,1},
		{1,0,0,0,0,1,1,0,0,1},
		{1,0,1,1,1,0,0,0,0,1},
		{1,0,0,0,1,0,0,0,0,1},
		{1,0,1,0,0,0,1,0,0,1},
		{1,0,1,1,1,0,1,1,0,1},
		{1,1,0,0,0,0,0,0,0,1},
		{1,1,1,1,1,1,1,1,1,1}
	};

	int i, j, find = 0, di;
	rear++;
	Qu[rear].i = in_x; Qu[rear].j = in_y;
	Qu[rear].pre = -1;
	A[in_x][in_y] = -1;
	
	while(front <= rear && !find)
	{
		front++;
		
		// current position
		i = Qu[front].i; j = Qu[front].j;
		
		// find the way
		if(i == out_x && j == out_y)
		{
			find = 1;
			print(front);
			return(1);
		}

		// search widely
		for(di = 0; di < 4; di++)
		{
			switch(di)
			{
			case 0: i = Qu[front].i - 1; j = Qu[front].j; break;
			case 1: i = Qu[front].i;     j = Qu[front].j + 1; break;
			case 2: i = Qu[front].i + 1; j = Qu[front].j; break;
			case 3: i = Qu[front].i;     j = Qu[front].j - 1; break;
			}

			if(A[i][j] == 0)
			{
				rear++;
				Qu[rear].i = i; Qu[rear].j = j;
				Qu[rear].pre = front;
				A[i][j] = -1;
			}
		} // end of search
		
	}

	return 0;
}

void print(int front)
{
	int k = front, j, ns = 0;
	printf("\n\n");

	do{
		j = k;
		k = Qu[k].pre;
		Qu[j].pre = -1;
	}while(k != 0);
	
	printf("\n the path is as follow: \n");
	k = 0;
	while(k < MAXSIZE)
	{
		if(Qu[k].pre == -1)
		{
			ns++;
			printf("\t[%d,%d]", Qu[k].i, Qu[k].j);
			if(ns % 5 == 0)
				printf("\n");
		}
		k++;
	}
	printf("\n");
}


该方法可以知道最短路径

文档的Jaccard相似度, MinHash, 及MinHash签名 MinHash  算法由 Andrei Broder (1997) 提出的, 它是一种快速计算海量文档相似度的近似方法。开始被用在AltaVista 搜索引擎上,用于检测两个duplicate web pages, 如果两个web pages非常的像,则把这个page丢掉。Minhash也被用在lage-scale clustering 算法中。 本文的结构 1. 文本的Jaccard相似度; 阅读详情

相关推荐

Bloom Filter 原理 及C++ 实现

布隆过滤器[1](Bloom Filter)是由布隆(Burton Howard Bloom)在1970年提出的。 它实际上是由一个很长的二进制向量和一系列随机映射函数组成,布隆过滤器可以用于检索一个元素是否在一个集合中。 它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率(假正例False positives,即Bloom Filter报告某一元素存在于某集合中,但是实

在路上 的专栏 5185

unity 队列用法总结

新建队列 new一个int类型的队列 Queue<int> queue=new Queue<int> (); 方法and属性 属性Count,获取 Queue 中包含的元素个数。 if(queue.Count==0) 从 Queue 中移除所有的元素 queue.Clear(); 判断某个元素是否在 queue 中 queue.Contains( 5); 移除并返回在 Q...

qq_43666766的博客 5137

中英文并行语料对齐

1. 语料 MultiUN-zh-en.txt  2. 使用工具:  中文分词工具(stanford segmenter),  英文的tokenizer   对齐工具GIZA++ (giza-pp-v1.0.7.tar.gz) 3. 预处理: a. 下载 en-zh-multiUN.tmx 版本的 包含了并行的句对,但是句对有些是错误的。需要处理一下,另外有些句子异乎寻常的长(

在路上 的专栏 4908

走出迷宫(bfs+queue)

时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。 假设你已经得到了一个n×m的迷宫的图纸,请你找出从起点到出口的最短路。 输入 第一行是两个整数n和m,表示迷宫的行数和列数。 接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符.表示空地,#表示墙,...

upc122的博客 637

故障转移集群无法连接到节点_Windows 2012系统群集故障转移集群

理论知识很重要!集群和群集是什么意思?其实看到标题可能会感觉有点绕,简单易懂的来说一下:集群,英文名称为Cluster,集群的意思就是将多个系统连接在一起,可以让多台服务器能够像一台服务器那样工作。通常采用集群系统是为了提高系统的稳定性和网络中心的数据处理能力以及服务能力。第二个就是:群集,其实这个概念也不难理解,群集是把多个计算机连接在一起,形成整形,随后可以更好的利用设备资源的一项新...

weixin_39535283的博客 3250

Emuelec系统安装全流程:超详细版指南(从零开始)

手把手带你完成emuelec系统的完整安装,从基础准备到系统配置一步不落,适合新手入门。深入解析emuelec在各类设备上的部署技巧,让复古游戏体验更流畅。

weixin_42594419的博客 1970

使用栈和队列实现迷宫路径查找算法

本文分别使用栈和队列实现了迷宫搜索算法, 采用了不同的存储方式实现深度搜索和广度搜索,并深入解析了标记策略和搜索策略,文中最后提供了C++实现代码和结果演示。

jin的专栏 1万+

FC游戏Hack实战:从零开始修改游戏数据

本文以《忍者神龟3》为例,详细介绍了从零开始进行FC游戏Hack的完整实战流程。通过使用FCEUX模拟器和调试器,结合“递减法”精准定位生命值内存地址,并利用十六进制编辑器修改关键指令,最终实现“无限生命”效果。文章旨在引导读者理解游戏数据修改的核心原理与操作技巧,重温经典的同时深入计算机程序运行机制。

weixin_28366353的博客 356

八皇后问题和迷宫问题

/判断这个位置是否能放皇后。* 0.代表可以走但不确定 1.代表障碍物 ,2.代表可以走, 3代表不能走通。//为1,2,3都不能走。k++) //k代表他选的位置。

weixin_58066719的博客 650

银河麒麟V11 + KVM/QEMU + GT 710 GPU直通 Win10 完整操作流程文档

宿主机:RTX 5080专门运行ollama大模型服务,通过SSH/VNC远程管理Win10虚拟机:GT 710直通,物理键盘专属,通过物理显示器处理视频应用硬件隔离:两个系统完全隔离,互不干扰,性能最大化两种不同的直通方式直通方式 配置方法 设备在宿主机的状态 典型应用场景PCIe设备直通 vfio-pci.ids=10de:128b,10de:0e0f 设备完全从宿主机消失,被vfio-pci驱动接管 GPU、网卡、NVMe硬盘。

weixin_45285654的博客 1153

V-REP(Cooprliesim EDU)自学笔记 实现UR5机械臂末端按轨迹移动

V-REP(Cooprliesim EDU)自学笔记 实现UR5机械臂末端按轨迹移动

xu_white的博客 7583

迷宫问题

定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着

偏离的定弦 659

ARFoundation系列讲解-教程目录

一、教程目录 ARFoundation快速入门-01简介 ARFoundation快速入门-02环境搭建 ARFoundation快速入门-03环境配置之iOS ARFoundation快速入门-04环境配置之Android ARFoundation快速入门-05ARKit设备支持列表 ARFoundation快速入门-06ARCore设备支持列表 ARFoundation快速入门-07检查设备支持 ARFoundation快速入门-08平面检..........

a451319296的博客 3万+

迷宫的最短路径

给定一个大小为N*M的迷宫,由通道('.')和墙壁('#')组成,其中通道S表示起点,通道G表示终点,每一步移动可以达到上下左右中不是墙壁的位置。试求出起点到终点的最小步数。(本题假定迷宫是有解的)(N,M<=100)样例输入:10 10样例输出:22#include<cstdio> #include<iostream> #inclu...

weixin_34270865的博客 92

AppStore逆向分析(登录、查询、下单)

某网站全协议流程逆向与分析(自动登录、激活、查询、下单)

吴秋霖的博客 3027

Coze工作流的代码无法安装第三方模块(依赖)怎么办?(如何解决Coze工作流代码缺少模块(依赖)的问题)

Coze工作流的代码无法安装第三方模块(依赖)怎么办?(如何解决Coze工作流代码缺少模块(依赖)的问题)

XiaoqiangClub的博客 4365

也谈迷宫算法(最短路径 队列)+源程序

晕死鸟,原来的有错误哦,改了一个判断条件,加了一个变量。思路是没错,还是广度优先遍历。现在改好了,发现错误再请指正:sduboy@163.com#include #include #define ElemType MazePostypedef struct MazePos0{           int x,y;           }MazePos;        typedef struct

benbebnmao的专栏 3236

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LeetCode_1210. 穿过迷宫的最少移动次数

BFS

qq_47307864的博客 209

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python 队列 广度优先搜索

刚开始队列里面只有1,1出队,2进队,2出队,3进队,3出队,4和5进队,4出队,6进队现在队列里面是5和6,5出队,7进队,队列里面现在是6和7,6出队,8和9进队,队列里面还有7、8、9,7出队10进队,队列里面还有8、9、10 出队 1 2 3 4 5 ...

我只是个小学生 能力有限 一直抱着学习的态度 348

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

HDU1026

:n*m迷宫,求从(0,0)到(n-1,m-1)的最少时间。'X'是墙,'.'是空地,'1'-'9'表示有怪物,消灭之需要数字对应的时间。 import java.io.BufferedInputStream; import java.io.PrintWriter; import java.util.PriorityQueue; import java.util.Queue; imp

老李2009 627

算法_BFS

广度优先搜索(Breadth-First Search / BFS) 广度优先搜索,一般用来解决最短路径的问题。和深度优先搜索不同,广度优先的搜索是从起始点出发,一层一层地进行,每层当中的点距离起始点的步数都是相同的,当找到了目的地之后就可以立即结束。 广度优先的搜索可以同时从起始点和终点开始进行,称之为双端 BFS。这种算法往往可以大大地提高搜索的效率。 举例:在社交应用程序中,两个人之间需要经过多少个朋友的介绍才能互相认识对方。 解法: 只从一个方向进行 BFS,有时候这个人认识的朋友特...

weixin_37841366的博客 236

BFS的辅助队列最小安全长度

本文仅对于搜索迷宫等完全矩形图的BFS搜索操作适用。 由于BFS搜索操作有一个o-c表(open-closed表)来判断是否搜索过,因此,这就预言了BFS所需要的QUENE的长度必然小于图中的实际节点总数(完全矩形图的节点总数恒不大于R*C)。基于QUENE的FIFO原理,对于一个标准图,我们可以很容易地证明:当S点,即起始点在图中间时,所需的QUENE的长度一般大于当S点位于图的边缘时的QUE

Contritio的博客 1162

HMM 做训练的 Sigma not positive definite (非正定的)原因及处理办法

最近使用pmtk3工具,做 HMM with Gaussian Mixture Model 的 fitting 的时候总是报错问题是 Sigma is not positive definite.  大致搜了下什么是非正定,以及解决办法。 (I)问题出现:四种情况可以出现此问题 1. 输入的 covariance 或者corelation matrix 非正定。例如在最小二乘规划中

在路上 的专栏 4813

最短路径 Part I- Single source shortest path

单源最短路径问题: 即从一个起点 (single source)到其他节点的最短路径。 Lemma 1. 最短路径的子路径也是最短路径。 (如果子路径不是最短路径那么之前的路径也不是最短路径)。 Negative weight edges If the graph G = (V, E) contains no negative weight cycles reachable

在路上 的专栏 1635

从大端小端,到联合体与结构体

问题引出: 计算机大端小端之争。 1)Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 数字0x12345678 在大端小端的存储方式  1)大端模式: 低地址 -----------------> 高地址 0x12  |  0x34  |  0

在路上 的专栏 1532

C++ 传值,传引用和传指针-参考Effective C++ 第三版Item20~21

拷贝构造函数 copy construtor  为什么有copy construtor? 函数的传参数有三种方式:传值,传引用和传指针。传值会产生对象的副本,而后两者是传的是对象的别名和对象的指针。 问题来了: 如果传值方式一个比较大的对象时候,在产生对象副本的时候一般会触发对象的构造函数。 一般情况下构造函数会完成一些初始化工作,但是很有可能传进来的对象已经被改变了,如果调用构造函数

在路上 的专栏 1431
上一篇: 迷宫问题 (上)栈 回溯法
下一篇: 归并排序
dannyPolyu
博客等级 码龄14年 4粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值