C 實現簡單的走迷宮

2021-07-30 21:40:51 字數 1435 閱讀 8786

c++實現簡單走迷宮

用n*n個小方格代表迷宮,每個方格上有乙個字元0或1,0代表這個格仔不能走,1代表這個格仔可以走。只能乙個格仔乙個走,而且只能從乙個格仔向它的上、下、左、右四個方向走,且不能重複。迷宮的入口和出口分別位於左上角和右下角,存在唯一的一條路徑能夠從入口到達出口,試著找出這條路徑。

例如,下圖是乙個迷宮,紅色表示走出迷宮的一條路徑

輸入:入口座標(startx,starty),出口座標(endx,endy)

輸出:如果存在這樣一條路徑,則輸出1,並輸出路徑(0,0)->(1,0)->(1,1)->(2,1)->(2,2)->(3,2)->(4,2)->(5,2)->(5,3)->(5,4)->(5,5)->(4,5)->(4,6)->(4,7)->(5,7)->(6,7)->(7,7)

思路:利用回溯法求解。

首先,根據輸入在矩陣中找到路徑的起點。假設矩陣中某個格仔的字元為1,就往相鄰的格仔尋找字元為1的格仔。

除了在矩陣邊界上的格仔之外,每個格仔都有4個相鄰的格仔。重複這個過程直到在矩陣中找到相應的出口位置。

當在矩陣中定位了路徑上n個格仔的位置後,在與第n個格仔周圍都沒有找到第n+1個格仔為1,則只好在路徑上回到第n-1個格仔,重新去尋找第n個字元為1的格仔

由於路徑不能重複進入格仔,我們需要定義乙個字元矩陣一樣大小的布林值矩陣,用來標記路徑是否已經進入了相應格仔。

**實現如下:

#include #include using namespace std;

class solution

delete visited;

return false;

} /*此函式用來判斷在當前路徑滿足條件下,相鄰格仔中是否存在乙個格仔滿足條件*/

bool haspathcore(char* matrix, int rows, int cols, int row, int col, int endx, int endy, bool* visited, vector& path)

bool haspath = false;

if (row >= 0 && row < rows&&col >= 0 && col < cols&&matrix[row*cols + col] == '1' && !visited[row*cols + col])

}return haspath;

}};int main()

簡單BFS 走迷宮

描述 l上次旅行進入了乙個迷宮,他被困在了乙個n m的矩形迷宮中。l開始在左上角的點,他知道出口在右下角,他可以向四個方向移動到相鄰的點。不過這個迷宮有些魔法,每個格仔有一種顏色,不同的顏色代表不一樣的功能 如果格仔是紅色的,表示當前格仔無法通行 如果格仔是粉紅,表示格仔可以正常通行 如果是橙色,當...

C 自動走迷宮

自己寫的乙個c 走迷宮 using system using system.collections.generic using system.linq using system.text namespace zoumigong int arr 地圖結束 stack stack new stack s...

C 簡單人機互動 走迷宮

include include include include include using namespace std class basic 顯示游標 void show cursor 游標移動到指定座標處 void gotoxy int x,int y 在指定座標處輸出字串 void outxy...