劍指offer 八皇后問題

2021-08-19 11:31:34 字數 639 閱讀 9209

題目:在8*8的西洋棋上擺放8個皇后,使其不能相互攻擊,即任意兩個皇后不得處在同一行、同一列或者同一條對角線上。請問總共有多少種符合條件的擺法?

劍指offer上給出的是全排列法,解法步驟如下:

(1)定義陣列columnindex[8],陣列中第i個數字表示位於第i行的皇后的列號;

(2)對陣列用0~7進行初始化,初始化就保證了任意兩個皇后不同列;

(3)對陣列進行全排列;

(4)判斷每乙個排列對應的8個皇后是不是在同一條對角線上(columnindex[i]-columnindex[j]==i-j或columnindex[i]-columnindex[j]==j-i)。

具體的**如下:

public class eightqueen ;

eightqueen(columnindex,0);

system.out.println("八皇后問題共有"+count+"種解法");

}public static void eightqueen(int columnindex,int index)

int len=columnindex.length;

if(index==len-1) {

boolean res=true;

for(int i=0;i

劍指offer 八皇后問題

劍指offer上解決八皇后問題,沒有用傳統的遞迴或非遞迴回溯法,而是用了很巧妙的全排列法。先說下八皇后問題 在8 x 8的西洋棋上擺放八個皇后,使其不能相互攻擊,即任意兩個皇后不得處於同一行,同一列或者同意對角線上,求出所有符合條件的擺法。全排列解決八皇后問題的思路如下 由於8個皇后不能處在同一行,...

劍指offer 八皇后問題

劍指offer上解決八皇后問題,沒實用傳統的遞迴或非遞迴回溯法,而是用了非常巧妙的全排列法。先說下八皇后問題 在8 x 8的西洋棋上擺放八個皇后,使其不能相互攻擊,即隨意兩個皇后不得處於同一行,同一列或者允許對角線上,求出全部符合條件的擺法。全排列解決八皇后問題的思路例如以下 因為8個皇后不能處在同...

《劍指Offer》面試題 八皇后問題

題目 八皇后問題 即在8 x 8的西洋棋上擺放八個皇后,使其不能相互攻擊,即任意兩個皇后不得處於同一行,同一列或者同意對角線上,求出所有符合條件的擺法 在做了前面兩道題之後,解決這道題就容易多了。思想一模一樣。全排列解決八皇后問題的思路如下 由於8個皇后不能處在同一行,那麼肯定每個皇后佔據一行,這樣...