迷宮是個益智的小遊戲,但是就算是個小遊戲也會有外掛程式吧,那麼就來寫乙個小小的迷宮來玩玩吧(雖然是程式自己走的。。)但是這個不重要,重要的是,我不用燒腦玩迷宮啊~
//物件導向實現迷宮
#includestruct pos
;templateclass maze
} }*/
maze(int* maze)
}} void print()
cout << endl;
} cout << endl;
} bool getpath(pos entry,stack& path)
pos next = cur;
//上下左右探測
next._row -= 1; //上
if (checkaccess(next))
next = cur;
next._row += 1; //下
if (checkaccess(next))
next = cur;
next._col -= 1; //左
if (checkaccess(next))
next = cur;
next._col += 1; //右
if (checkaccess(next))
//回溯
//走完一條路沒有找到出口返回則標記為3
pos back = path.top();
_maze[back._row][back._col] = 3;
path.pop();
} //走到這裡表明沒有找到出路
return false;
} //遞迴實現找路徑
void getpathr(pos entry, stack& path, stack& shortpath)
path.push(entry);
if (entry._row == n - 1)
}pos next = entry;
//上 如何讓它找到每條出路,不返回,直接遞迴
next._row -= 1;
if (checkaccess(entry,next))
//下next = entry;
next._row += 1;
if (checkaccess(entry,next))
//左next = entry;
next._col -= 1;
if (checkaccess(entry,next))
//右next = entry;
next._col += 1;
if (checkaccess(entry,next))
path.pop();
//return false;
} bool checkaccess(pos cur, pos next)
else
}//過載
bool checkaccess(pos pos)
return false;
}private:
int _maze[n][n];
};void testmaze()
, ,,,
,,,,
,};
//如何動態開闢乙個二維陣列
//1、直接開闢一維陣列:m*n+j
//2、指標
//第一種傳參方式
//mazemz(maze);
mazemz((int*)maze);
mz.print();
pos entry;
stackpath;
stackshortpath;
entry._row = 2;
entry._col = 0;
//cout << "是否找到出口?"<
#define _crt_secure_no_warnings 1
#includeusing namespace std;
#include#include"maze.h"
int main()
整個迷宮就完成啦,介面化實現我還在慢慢摸索中~~ 棧實現迷宮
棧的型別定義 棧是一種特殊的線性表,限定只能在表的一端進行插入和刪除操作的線性表。在表中,允許插入刪除的一端稱為 棧頂 不允許插入刪除的另一端稱為 棧底 沒有元素的棧稱為空棧,插入元素稱為入棧,刪除元素稱為出棧,稱為先進後出。順序棧型別的定義 順序棧的儲存方式是陣列,需要事先為他分配乙個可容納最多元...
棧實現迷宮演算法
棧實現迷宮回溯演算法 實現 include using namespace std include include define n 10 矩陣最大行列數 template class mazestack 迷宮將要用到的棧 mazestack void push t x this ptr size ...
棧實現迷宮求解問題
總體感觸是 不要著急,一步一步來,問題很容易解決的。首先是要實現乙個迷宮的地圖。明確如何儲存地圖,用vector實現二維陣列,每個元素代表地圖的乙個格仔。需要儲存哪些資訊。一張地圖的某乙個方格需要標示 能否通過,是否走過了。94 struct point 位置資訊可用postype儲存。就是 str...