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

2021-10-08 22:14:10 字數 1614 閱讀 4819

在乙個8*8的矩陣中,四面都是牆,矩陣中有幾個點不能通過;假設有乙個小球,要到達指定的座標,求出小球走過的路徑。
![在這裡插入描述](
1 ---------> 圍牆,不能通過

2 ----------> 目標點

3 ----------> 已經走過,但是走不通

4.策略
逆時針找路,即按照:下 ---> 右 --->上---- 左的順序尋找
5.實現思路
手動設定起點,使用查詢策略遞迴尋找終點,走到一點,就將其座標置為2,列印出小球的路徑。
6.**實現
package modules;

/** * @program: 6.遞迴的應用

* @description: 主函式

* @author: zhou jian

* @create: 2020-07-14 22:49

*/public

class

main

// 將矩陣第一列和最後一列元素置為1

for(

int i =

0; i <

8; i++

)// 將(2,1)(3,1)置為1 --------> 障礙物

map[5]

[6]= map[2]

[2]=

1;// 列印矩陣

for(

int i =

0; i < map.length; i++

) system.out.

println()

;}system.out.

println

("***********************************====");

mazebackfunction

(map,1,

1);// 列印矩陣

for(

int i =

0; i < map.length; i++

) system.out.

println()

;}}// 迷宮

/** * @param array 傳入的矩陣

* @param x 起始點的x座標

* @param y 起始點的y座標

* @return 正確的路徑

*/public

static

boolean

mazebackfunction

(int

array,

int x,

int y)

else

elseif(

mazebackfunction

(array, x, y +1)

)elseif(

mazebackfunction

(array, x +

1, y)

)elseif(

mazebackfunction

(array, x, y -1)

)else

}else}}

}

遞迴(recursive) 迷宮回溯問題

建立乙個二維陣列 表示地圖 約定不同的數字表示不同的含義。元素的值,0 表示可以走還沒走過,1 牆,2 表示可以走,3 表示已經走過了,但是是死路。確定乙個策略。下 右 上 左。package chapter18.recursive object migong 左右全部置1 for i 0 unti...

遞迴演算法 迷宮回溯問題

package com.czn.recursion public class migong for int i 0 i 8 i map 3 1 1 map 3 2 1 for int i 0 i 8 i system.out.println boolean setway setway map,1,1...

遞迴與迷宮回溯問題

package com.dai.recursion public class migong 左右全置1 for int i 0 i 8 i 設定擋板 map 3 1 1 map 3 2 1 map 1 2 1 map 2 2 1 輸出地圖 system.out.println 地圖情況 for in...