資料結構08 八皇后問題

2021-09-29 16:48:08 字數 874 閱讀 8398

目錄

一、遞迴實現八皇后問題分析

二、**實現

1.定義乙個棋盤,並定義乙個列印棋盤的方法

2.判斷某個格仔是否可以放置皇后

3.設計棋盤

1.每一次回溯計算出一行中滿足條件的格仔

2.回溯的方法中,會利用乙個迴圈來判斷一行中滿足條件的格仔,即一行中滿足的列

3.當行數自增到8行時,每次迴圈得到的二維陣列即為滿足條件的乙個棋盤,列印

//定義乙個棋盤

static int arr = new int[8][8];

//列印這個棋盤

static int count = 0;

private static void show()

system.out.println();

} }

//判斷某個位置是否可以放置

private static boolean panduan(int x,int y)

} //判斷左上方有沒有皇后

for(int i = x-1, j = y-1; i>=0&&j>=0;i--,j--)

} //判斷右上方有沒有皇后

for(int i = x-1, j = y+1; i>=0&&j<=7;i--,j++)

} return true;

}

//當迴圈判斷出來一行中的某個滿足點時,遞迴出計算出下一行的點,當遞迴到最後一行時,列印棋盤

private static void result(int row)else

arr[row][col] = 0;

}} }

資料結構 八皇后問題

八皇后問題簡述 即求8 8的棋盤的所有合法布局,所為合法布局就是 棋盤上共擺放八個棋子,使得每兩個棋子都不在棋盤上的同一行 或者同一列 或同一對角線。在查詢所有情況過程中利用回溯法,回溯法的基本做法是搜尋,或是一種組織得井井有條的,能避免不必要搜尋的窮舉式搜尋法。這種方法適用於解一些組合數相當大的問...

資料結構 八皇后問題

include int count 0 八皇后問題 param row 表示起始行 param col 表示列數 param chess 指向每一行的指標 return int notdanger int row,int j,int chess 8 判斷左上方 for i row,k j i 0 k...

資料結構演算法 八皇后問題

八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848 年提出 在 88 格的西洋棋上擺放八個皇后,使其不能互相攻擊,即 任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法 92 理論上應該建立乙個二維陣列來表示棋盤,但是實際上可以通...