栈实现一个小迷宫-创新互联

概括:实现迷宫的算法主要在于查找和回溯。从入口开始之后我们所查找的每一个位置都要去判断它的另外三个方向(不包括刚刚走过的路径)的路径能不能通,如果能通则到下个位置,并将上个位置进行标注。在将此位置作为当前位置继续走。如果一个位置的另外三个方向都不能通过,则需要回溯,一直回溯到可以通过的位置。我们需要将走过的路径进行标注,以便回溯的时候更加快捷。

涉县网站建设公司创新互联,涉县网站设计制作,有大型网站制作公司丰富经验。已为涉县超过千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的涉县做网站的公司定做!

栈实现一个小迷宫

首先我们从起始位置开始一直沿橙色路线走下去,将走过的路径标记为2,最后将会走入死胡同,然后沿着紫色的路径进行回溯知道有同路。

下面我们来看一下实现代码

bool MazePath(int* a,int n,const Pos& entry,stack& path)
{
	Pos cur=entry;
	path.push(cur);
	while(!path.empty())
	{ 
		a[cur._row*n+cur._col]=2;
		if(cur._row==n-1)
		{
			return true;
		}
		else
		{		
			//上
		    Pos next=cur;
		    next._row--;
		    if(CheckIsAccess(a,n,next))
			{
				cur=next;
				path.push(cur);
				continue;
			}
			右
			next=cur;
			next._col++;
			if(CheckIsAccess(a,n,next))
			{
				cur=next;
				path.push(cur);
				continue;
			}
			//下
			next=cur;
			next._row++;
			if(CheckIsAccess(a,n,next))
			{
				cur=next;
				path.push(cur);
				continue;
			}
			//左
			next=cur;
			next._col--;
			if(CheckIsAccess(a,n,next))
			{
				cur=next;
				path.push(cur);
				continue;
			}
			
		       cur=path.top();
			path.pop();
		}			

	}

此程序是通过压栈,和出栈来实现。首先我们来简单的了解一下栈,栈是只能从一个口进行pop与push,正是因为栈的这个特点,我们在走迷宫时可以将能走通的路径压入栈中,在进入死胡同的时候可以进行回溯只需要出栈就可以。

博主第一次写,写得不好的地方希望大家多多包涵栈实现一个小迷宫

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前题目:栈实现一个小迷宫-创新互联
文章来源:http://myzitong.com/article/dsiogo.html