//再把左右兩行都設定為1
for(
int i=
0;i)//設定擋板
map[3]
[1]=
1;map[3]
[2]=
1;//輸出地圖
代表二維陣列的行數
for(
int i=
0;i) system.out.
println()
;}system.out.
println
("小球走過的路線:");
//使用遞迴回溯給小球找路
setway
(map,1,
1);//輸出新的地圖,小球走過的地圖
代表二維陣列的行數
for(
int i=
0;i) system.out.
println()
;}}/**
* 使用遞迴回溯給小球找路
* @param map 地圖
* @param i 從哪個位置開始找
* @param j
* @return 如果找到通路,就返回true,否則返回false
* */
//i,j表示從地圖的哪個位置開始出發(1,1)
//如果小球能到達map[6][5]位置,說明通路找到
//map[i][j]為0表示該點沒有走過,為1表示為牆走不通,為2表示通路可以走,為3表示該點已經走過,但是走不通
//走迷宮時,需要確定乙個策略:下-->右-->上-->左,如果走不通,再回溯(走的策略有很多,不止乙個)
將策略修改為:上右下左
資料結構 迷宮(遞迴)
如下 include include using namespace std define max row 10 巨集定義行 define max col 10 巨集定義列 struct seat int x int y class maze void printmaze 列印迷宮 cout end...
資料結構 遞迴思想及遞迴實現迷宮問題
遞迴 就是自己呼叫自己,然後一層層返回 乙個簡單的例子 列印問題 public static void main string args 列印問題 我們可以分析這個程式的執行過程 程式的方法在虛擬機器的棧空間執行 這就是遞迴的過程 有這樣乙個迷宮,從起點到終點,紅色是牆,黃色的是路,可以走,一次走一...
資料結構 迷宮問題
迷宮問題的總體思路是,從迷宮的入口出發,沿著某乙個方向向前試探,若能夠行得通,則繼續往前走,否則原來返回,再換另乙個方向繼續試探,直到所有可能的通路都被試探過,為了保證在任何乙個位置都能夠原來返回,需要設定乙個堆疊結構來儲存從入口到當前位置的路徑。maze.h pragma once include...