演算法程式設計 JAVA 八皇后問題

2021-07-03 03:32:09 字數 876 閱讀 9999

題目:在乙個8×8西洋棋盤上,有8個皇后,每個皇后佔一格;

要求皇后間不會出現相互「攻擊」的現象,即不能有兩個皇后處在同一行、同一列或同一對角線上。

問共有多少種不同的方法?

解題思路:通過乙個int[8][8]的二位陣列構建棋盤,初始化為0,我們可以定義如果該位置擺放了皇后那麼該位置對應的二維陣列被置為-1。因為皇后之間不能相互攻擊,所以我們要明確指出該皇后的影響範圍,於是我們採用將該皇后能影響到的棋盤位置全部+1,比如:

-11111111

11000000

10100000

10010000

10001000

10000100

10000010

10000001

public class main 

public static void cal(int a,int b)

}} else

}if(flag==true)

if(flag==false&&a>0)}}

return;

} } public static void add(int x,int y)

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

for(int i=-7;i<8;i++)

} for(int i=-7;i<8;i++)

} }public static void sub(int x,int y)

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

for(int i=-7;i<8;i++)

} for(int i=-7;i<8;i++)

} }}

八皇后程式設計問題

問題 八皇后 要求 解的輸出用八個數字表示,如 基本解,1代表第一行第一列有皇后,5代表第二行第五列有皇后,以此類推.解答 includeint count 0 int notdanger int row,int j,int chess 8 判斷左上方 for i row,k j i 0 k 0 i...

演算法 八皇后問題

問題簡述 八皇后問題是乙個以西洋棋為背景的問題 如何能夠在8 8的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。八皇后問題可以推廣為更一般的n皇后擺放問題 這時棋盤的大小變為n1 n1,而皇后個數也變成n2。而且僅當...

演算法 八皇后問題

問題描述 八皇后問題是乙個以西洋棋為背景的問題 如何能夠在8 8的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。八皇后問題可以推廣為更一般的n皇后擺放問題 這時棋盤的大小變為n n,而皇后個數也變成n。當且僅當n 1...