在我們學習數(shù)據(jù)結(jié)構(gòu)的時候都曾經(jīng)見過迷宮游戲,迷宮游戲的實現(xiàn)其實并不難,但是,我們在實現(xiàn)每一個算法的時候都應(yīng)該想一想這個問題的每一個解。最近,博主已經(jīng)開始重溫數(shù)據(jù)結(jié)構(gòu)啦,記得我們以前學習這里的時候,老師會用隊列來實現(xiàn)迷宮最優(yōu)解的尋找,氮素呢,博主就是這么可愛,博主就是想試試用棧來找一下。
10年積累的成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有龍馬潭免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
在實現(xiàn)之前讓我們先來復習一下棧的特點:first in last out
對于棧這種數(shù)據(jù)結(jié)構(gòu)我們只能在棧頂對其操作,根據(jù)實際情況可將其實現(xiàn)成鏈式或者順序結(jié)構(gòu)。但是一般情況下我們都會實現(xiàn)成順序結(jié)構(gòu),因為棧的特點導致了順序結(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 **記得在打開文件的時候做異常處理哦。博主在這里就不改了,小伙伴們自己看看 上面的代碼呢,其實寫的非常的不好,尤其是在代碼復用的方面,不過,博主今天只是來舉個栗子,今后會更加注意,你們也要注意哦,上面是個反面教材http://weahome.cn/article/pcpgdj.html