packagecom.cai.learn.math;
/*** 迷宮回溯:
* 目標:用遞迴方法達到指定位置 */
public
class
mazequestion
//上下兩橫排
for (int i = 0; i < 7; i++)
//中間設定2個擋格 maze[3][1] maze[3][2]
maze[3][1] =1;
maze[3][2] =1;
/*基本形成:
1 1 1 1 1 1 1
1 0 0 0 0 0 1
1 0 0 0 0 0 1
1 1 1 0 0 0 1
1 0 0 0 0 0 1
1 0 0 0 0 0 1
1 0 0 0 0 0 1
1 1 1 1 1 1 1
*///
目標:從maze[1][1] --->maze[6][5]
setway(maze,1,1);
for (int i = 0; i < 8; i++)
system.out.println();
}/*基本實現 2是所走的路線
1 1 1 1 1 1 1
1 2 0 0 0 0 1
1 2 2 2 0 0 1
1 1 1 2 0 0 1
1 0 0 2 0 0 1
1 0 0 2 0 0 1
1 0 0 2 2 2 1
1 1 1 1 1 1 1
*/}/*** 說明:
* 1.maze表示地圖
* 2.i,j表示開始位置(1.1)
* 3.如果能移動到位置(7.5),則說明找到
* 4.約定:0.表示沒有走過的路,1表示此路不通,2表示通路可以走,3.表示已經走過但此路不通
* 5.在走迷宮時,需要乙個策略(方法) 下->右->上->左,若果走不通,再回溯**
@param
maze 模擬地圖陣列
* @param
i 橫座標
* @param
j 縱座標
* @return
*/public
static
boolean setway(int maze,int i,int
j)else
else
if(setway(maze,i,j+1))
else
if(setway(maze,i-1,j))
else
if(setway(maze,i,j-1))
else
}else}}
}
迷宮回溯問題分析
1 問題引入 按照上面的地圖,我們用二維陣列模擬地圖,因為紅色的地方表示圍牆,所以在二維陣列裡,我們用1表示圍牆.int map new int 8 7 上下全部為1 for int i 0 i 7 i 左右全部為1 for int i 1 i 7 i map 3 1 1 map 3 2 1 sys...
利用遞迴實現迷宮回溯問題
在乙個8 8的矩陣中,四面都是牆,矩陣中有幾個點不能通過 假設有乙個小球,要到達指定的座標,求出小球走過的路徑。在這裡插入描述 1 圍牆,不能通過 2 目標點 3 已經走過,但是走不通4.策略逆時針找路,即按照 下 右 上 左的順序尋找5.實現思路手動設定起點,使用查詢策略遞迴尋找終點,走到一點,就...
迷宮程式簡單實現
這個程式是將乙個迷宮的程式列印出來,具體的操作我會在下面的程式中具體的 給出來,其中分為兩乙個小的程式,乙個是這個檔案,另乙個是乙個以head.cpp檔案 為main函式的檔案,好了,程式開始了 include iostream.h include malloc.h define error 0 d...