題目:在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個皇后不能處在同一行,那麼肯定每個皇后佔據一行,這樣...