棧實現(xiàn)一個小迷宮-創(chuàng)新互聯(lián)

概括:實現(xiàn)迷宮的算法主要在于查找和回溯。從入口開始之后我們所查找的每一個位置都要去判斷它的另外三個方向(不包括剛剛走過的路徑)的路徑能不能通,如果能通則到下個位置,并將上個位置進行標注。在將此位置作為當前位置繼續(xù)走。如果一個位置的另外三個方向都不能通過,則需要回溯,一直回溯到可以通過的位置。我們需要將走過的路徑進行標注,以便回溯的時候更加快捷。

涉縣網(wǎng)站建設公司創(chuàng)新互聯(lián),涉縣網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為涉縣超過千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設公司要多少錢,請找那個售后服務好的涉縣做網(wǎng)站的公司定做!

棧實現(xiàn)一個小迷宮

首先我們從起始位置開始一直沿橙色路線走下去,將走過的路徑標記為2,最后將會走入死胡同,然后沿著紫色的路徑進行回溯知道有同路。

下面我們來看一下實現(xiàn)代碼

bool MazePath(int* a,int n,const Pos& entry,stack<Pos>& 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();
		}			

	}

此程序是通過壓棧,和出棧來實現(xiàn)。首先我們來簡單的了解一下棧,棧是只能從一個口進行pop與push,正是因為棧的這個特點,我們在走迷宮時可以將能走通的路徑壓入棧中,在進入死胡同的時候可以進行回溯只需要出棧就可以。

博主第一次寫,寫得不好的地方希望大家多多包涵棧實現(xiàn)一個小迷宮

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

分享名稱:棧實現(xiàn)一個小迷宮-創(chuàng)新互聯(lián)
新聞來源:http://muchs.cn/article10/dsiogo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設虛擬主機、商城網(wǎng)站、網(wǎng)站策劃、微信公眾號標簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)