使用遞迴和回溯法實現迷宮問題

2021-10-02 18:43:21 字數 962 閱讀 2201

package recursion;

/** * 迷宮採用遞迴做法

* * @author justgeeker

* */

public class maze

/*** 0 表示沒走過,1表示圍牆,2表示可用走通,3表示可用走過但是是死路

* * @param len陣列長度

* @param wid陣列寬度

* @return

*/public int getmap(int len, int wid)

for (int i = 0; i < wid; i++)

arr[2][1] = 1;

arr[2][2] = 1;

arr[3][2] = 1;

arr[5][6] = 1;

arr[5][5] = 1;

arr[5][4] = 1;

arr[5][3] = 1;

return arr;

} public void showmap(int arr)

system.out.println();

} }/**

* * @param map地圖陣列

* @param i開始的橫座標

* @param 開始的縱座標

* @return

*/public boolean setway(int map, int i, int j) else else if (setway(map, i, j + 1)) else if (setway(map, i - 1, j)) else if (setway(map, i, j - 1)) else

} else

} }}

**執行結果

利用遞迴實現迷宮回溯問題

在乙個8 8的矩陣中,四面都是牆,矩陣中有幾個點不能通過 假設有乙個小球,要到達指定的座標,求出小球走過的路徑。在這裡插入描述 1 圍牆,不能通過 2 目標點 3 已經走過,但是走不通4.策略逆時針找路,即按照 下 右 上 左的順序尋找5.實現思路手動設定起點,使用查詢策略遞迴尋找終點,走到一點,就...

回溯法 迷宮問題

1.首先我們需要自定義乙個迷宮 左上角為入口,右下角為出口,0為路,1為牆 用二維陣列儲存 2.我們在走迷宮之前,首先要確立乙個走的順序,即貪心準則,我們首先試探的方向應該是下,然後是右,上,左 為了確保每乙個格仔都有上下左右,我們需要給我們的迷宮加上一圈牆8 8,變成10 10 3.當我們在乙個格...

迷宮問題 回溯法

描述 給乙個20 20的迷宮 起點座標和終點座標,問從起點是否能到達終點。輸入 多個測例。輸入的第一行是乙個整數n,表示測例的個數。接下來是n個測例,每個測例佔21行,第一行四個整數x1,y1,x2,y2是起止點的位置 座標從零開始 x1,y1 是起點,x2,y2 是終點。下面20行每行20個字元,...