8皇后演算法的簡單實現(回溯)

2022-03-16 20:58:11 字數 821 閱讀 3971

package

com.cai.learn.math;

/*** 8皇后問題運算(回溯演算法)

* 思路:1.第乙個皇后放在第一行,第一列

* 2.第二行皇后放在第二行第一列,然後判斷是否ok,如不ok,繼續放在第二列,第三列....第8列,找個乙個合適的位置

* 3.繼續第三個皇后.....

* 4.得到乙個正確的時候,在棧回退到上乙個棧時,就會開始回溯。即第乙個皇后第一列時得到所有正確的解

* 5.然後回頭把第乙個皇后放在第二列,第三列...第8列 得出所有正確解 */

public

class

eightqueen

public

static

void getresult(int array,int

n) system.out.println();

return

; }

//8列,第1列。第2列....第8列

for (int i = 0; i < 8; i++) }}

/*** 判斷第n行的位置是否正確

* @param

arr 已經排列的位置

* @param

i 第幾行(i可能是0)

* @return

*/public

static

boolean isright(int arr,int

i) }

return

true

; }

}

回溯演算法 8皇后

回溯演算法的本質是深度優先搜尋,回溯又叫試探法 backtracking 深度優先遇到障礙再返回來。回溯法要先定義乙個解空間,用便於搜尋的方式整理解空間,然後深度優先搜尋。八皇后問題 解空間?八個皇后在棋盤上面的排列位置可以用乙個8元陣列表示,x1,x2,x3,x4,x5,x6,x7,x8代表第i行...

迭代回溯 8皇后

八皇后問題 就是在8 8格仔上放8個皇后 皇后是可以橫行豎行斜行行走 他們之間不能存在可以被吃的關係 演算法 迭代回溯法 思路是這樣 紅色框代表put 函式裡的if沒有通過 就不再有進一步迭代 子樹 進行下乙個1皇后2列的進一步匹配 陣列q key是行數 value是列數 max1 n皇后 圖 de...

8皇后回溯法

思路 逐行放置,逐列搜尋。從當前行的第一列開始搜尋,判斷該位置是否合法。合法則遞迴判斷下一行,不合法則搜尋下一列,直到最後一列也不符合,或者在最後一行放下棋子就返回上一次遞迴,一直到第一行遍歷完畢。include include include define maxsize 8 char a max...