在我們學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的時候都曾經(jīng)見過迷宮游戲,迷宮游戲的實現(xiàn)其實并不難,但是,我們在實現(xiàn)每一個算法的時候都應(yīng)該想一想這個問題的每一個解。最近,博主已經(jīng)開始重溫數(shù)據(jù)結(jié)構(gòu)啦,記得我們以前學(xué)習(xí)這里的時候,老師會用隊列來實現(xiàn)迷宮最優(yōu)解的尋找,氮素呢,博主就是這么可愛,博主就是想試試用棧來找一下。
創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、太平網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為太平等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。在實現(xiàn)之前讓我們先來復(fù)習(xí)一下棧的特點:first in last out
對于棧這種數(shù)據(jù)結(jié)構(gòu)我們只能在棧頂對其操作,根據(jù)實際情況可將其實現(xiàn)成鏈?zhǔn)交蛘唔樞蚪Y(jié)構(gòu)。但是一般情況下我們都會實現(xiàn)成順序結(jié)構(gòu),因為棧的特點導(dǎo)致了順序結(jié)構(gòu)管理方便,并且CPU緩存利用率更高。下面我們來簡單的講解一下迷宮小游戲
為了避免用戶操作的不便性,我們選擇將迷宮提前寫好放在一個叫做"Maze.h"的文件中
s1;
Pos man = entry;
Pos next = man;
Pos cur = entry;
while ( 1 )
{
if (!Check(a, man, R, C))
{
cout << "最佳路徑長度:";
cout << min.size() << endl;
return true;
}
s1.push(man);
while (!s1.empty())
{
a[man._x*C + man._y] = 2;
if (man._x == (R - 1) || man._y == (C - 1))
{
cout << "Find&end" << endl;
if ((s1.size() < min.size()) || min.size() == 0)
min = s1;
while (!s1.empty())
{
cur = s1.top();
s1.pop();
if (Check(a, cur, R, C))
{
man = cur;
break;
}
}
if (s1.empty())
{
cout << "最佳路徑長度:";
cout << min.size() << endl;
return true;
}
}
//********************************************下
next = man;
next._x++;
if (IsValid(a, next, R, C))
{
s1.push(man);
man = next;
continue;
}
//********************************************右
next = man;
next._y++;
if (IsValid(a, next, R, C))
{
s1.push(man);
man = next;
continue;
}
//********************************************左
next = man;
next._y--;
if (IsValid(a, next, R, C))
{
s1.push(man);
man = next;
continue;
}
//********************************************上
next._x--;
if (IsValid(a, next, R, C))
{
s1.push(man);
man = next;
continue;
}
else
{
man = s1.top();
s1.pop();
}
}
man = entry;
}
}
void GameTest()
{
//**********************從文件讀入迷宮大小**********************
ifstream fout("Maze.txt");
stack **記得在打開文件的時候做異常處理哦。博主在這里就不改了,小伙伴們自己看看 上面的代碼呢,其實寫的非常的不好,尤其是在代碼復(fù)用的方面,不過,博主今天只是來舉個栗子,今后會更加注意,你們也要注意哦,上面是個反面教材http://weahome.cn/article/ccsche.html