右下角位置為出路
("小球走過,並標識過的 地圖的情況");
for(
int i =
0; i <
8; i++
) system.out.
println()
;}}// 1. map 表示地圖
// 2. i,j 表示當前位置座標
// 3. 如果小球能到 map[6][5] 位置,則說明通路找到.
// 4. 約定: 當map[i][j] 為 0 表示該點沒有走過 當為 1 表示牆; 2 表示通路可以走; 3 表示該點已經走過,但是走不通
// 5. 在走迷宮時,需要確定乙個策略(方法) 下->右->上->左 , 如果該點走不通,再回溯
public
static
boolean
setway
(int
map,
int i,
int j)
else
elseif(
setway
(map, i, j+1)
)elseif(
setway
(map, i-
1, j)
)elseif(
setway
(map, i, j-1)
)else
}else}}
}八皇后問題介紹
八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於2023年提出:在8×8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即:任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。
思路分析
**實現
package com.whb.recursion;
public
class
queen8
/** *
* @param n 當前在第幾行(或第幾個皇后)
* @return
*/public
static
boolean
judge
(int n)
}return
true;}
/** *
* @param n 當前到第幾個皇后了
* @return
*/public
static
void
check
(int n)
// 遍歷這一行的每乙個位置
// 當前行遍歷完後,有回溯
for(
int i =
0; i < max; i++)}
}// 列印
public
static
void
print()
system.out.
println();}}
遞迴 迷宮問題和八皇后問題
map i j 0表示未走過,可以嘗試 1表示牆 2表示該路,可以走通 3表示該路,已走過,但走不通 當 map 6 5 2,則已到達目的地 最右下角 結束遞迴 public static void main string args 第1列和7行,使用1填牆 for int h 1 h horizo...
遞迴應用 八皇后問題
八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。八皇后問題可以推廣為更一般的n皇后擺放問題 這時棋盤的大小變為n1 n1,而皇后個數也變成n2。而且僅當 n2...
遞迴回顧(迷宮問題,八皇后問題)
簡單的說 遞迴就是方法自己呼叫自己,每次呼叫時傳入不同的變數,遞迴有助於程式設計者解決複雜的問題,同時讓 變得簡潔。遞迴呼叫規則 1.當程式執行到乙個方法的時候,就會開闢乙個獨立的空間棧 2.每個空間的資料 區域性變數 是獨立的 列印問題 8public static void test int n...