网站建设资讯

NEWS

网站建设资讯

栈实现一个小迷宫

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

创新互联是一家专业的成都网站建设公司,我们专注网站设计制作、成都做网站、网络营销、企业网站建设,卖友情链接广告投放平台为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。

栈实现一个小迷宫

首先我们从起始位置开始一直沿橙色路线走下去,将走过的路径标记为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,正是因为栈的这个特点,我们在走迷宫时可以将能走通的路径压入栈中,在进入死胡同的时候可以进行回溯只需要出栈就可以。

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


当前题目:栈实现一个小迷宫
文章来源:http://cdweb.net/article/jhicec.html