遞迴 解決迷宮問題

2022-07-13 18:48:09 字數 1306 閱讀 3460

先用二維陣列模擬出**,給部分**賦值1來說明是牆壁(紅色部分)

public

static

void

main(string args)

//設定障礙

map[3][1]=1;

map[3][2]=1;

//map[1][2]=1;

//map[2][2]=1;

//列印**

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

system.out.println();

}//進行尋路

setway(map,1,1);

//列印**

system.out.println("尋路完成");

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

system.out.println();}}

設定尋路的方法,按照設定的策略(如下右上左)來逐個進行遞迴,如果能走通,這條路線標識為2,走不通(無法到達指定終點)遞迴進行回溯,將走過的路置為3

判斷這條路是否可行: 1是牆,2是走過的路,3是走不通的路

//

設定策略方法(下右上左)

public

static

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

}

執行結果是:

注意:選擇的策略不同,迷宮的查詢路徑就不同

如何獲取最短路徑?

可以統計不同的策略生成的路線,通過獲取策略的路徑長度來比較出最短路徑的策略

如上面這種策略,統計路徑長度

//

統計路長

int count=0;//

長度for (int i=0;i<10;i++)}}

system.out.println("路徑長"+count);

迷宮問題 遞迴解決

建立人 wdl 建立時間 2021 3 21 描述 public class migong 左右全部置為1 for int i 0 i 8 i 設定擋板,1表示 map 3 1 1 map 3 2 1 map 1 2 1 map 2 2 1 輸出地圖 system.out.println 地圖的情況...

遞迴解決走迷宮問題

public static void main string args for int i 0 i 7 i maze 3 1 1 maze 3 2 1 maze 1 2 1 maze 2 2 1 for int i 0 i 8 i system.out.println if mazegame maz...

利用遞迴解決迷宮問題

利用遞迴解決迷宮問題 author rocco l 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 使用遞迴回溯給小球找路 setway map...