演算法 深度優先搜尋,求迷宮內兩點最短路徑問題

2021-09-19 09:26:28 字數 785 閱讀 9583

問題描述:在乙個迷宮裡,規定「 0」代表可以通過,「1」代表有障礙物。

尋求從初始值(row0,col0)到末值(row,col)最短路徑是多少

例:0 0 1 0

1 0 0 0

0 0 1 0

0 1 0 0

0 0 0 1

在兩點之間一定能到達的前提下。。。。。要不然就沒意思了。。。

#includeusing namespace std;

int row = 0, col = 0, min = 100000;//行,列,最短路徑

int a[50][50], book[50][50];

int starty, startx = 0;//開始座標

int endx, endy = 0;//結束座標

void dfs(int x, int y, int step)

,//向左走

,//向下走

,//向右走

};//向上走

if ((x == endx) && (y == endy))

for (int k = 0; k < 4; k++) //上下左右四個方向進行搜尋 }

return;

}int main()

cout << endl;

} book[startx][starty] = 1;

dfs(startx, starty, 0);

cout << min;

return 0;

}

DFS深度優先搜尋 之 兩點」遊戲

上次我們講過回溯,是一種 通用解題法 這裡我們要講的dfs是一種對圖或樹的搜尋,是對回溯思想的一種在樹 圖遍歷 the tree graph it deals with is explicitly constructed 上的應用和實現。從起點出發,走過的點要做標記,發現有沒走過的點,就隨意挑乙個往...

棧 深度優先搜尋與回溯演算法求解迷宮

利用棧和回溯演算法求解迷宮 這是老師帶著做的,自己寫不知道什麼時候能調出來 這就是和老師的差距,這樣的程式他就10幾分鐘而已 code include define max row 5 define max col 5 int maze max row max col struct pointsta...

隨機迷宮生成與尋路演算法(1)深度優先搜尋

接下來一段時間,想要研究下隨機迷宮生成演算法,打算在有空可時候偶爾更新一下這方面的學習過程。隨機迷宮的生成演算法有很多種,比如遞迴回溯,遞迴分割,隨機prime等等。今天是第一次嘗試隨機迷宮生成,就先試一下用遞迴的方法通過深度優先搜尋來生成隨機迷宮。首先我們來明確一下基本觀念,迷宮可以通過乙個二維陣...