迷宮回溯分析及簡單實現

2022-03-16 20:58:12 字數 1640 閱讀 1554

package

com.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...