使用C 實現的N皇后問題

2021-09-25 06:35:13 字數 663 閱讀 6978

一、專案簡介

八皇后問題是乙個古老而著名的問題,是回溯演算法的經典問題。該問題是十九世紀著名的數學家高斯在2023年提出的:在8*8的西洋棋棋盤上,安放8個皇后,要求沒有乙個皇后能夠「吃掉」任何其它乙個皇后,即任意兩個皇后不能處於同一行,同一列或者同一條對角線上,求解有多少種擺法。

高斯認為有76種方案。2023年在柏林的象棋雜誌上不同的作者發表了40種不同的解,後來有人用圖論的方法得到結論,有92種擺法。

本實驗拓展了n皇后問題,即皇后個數由使用者輸入。

八皇后在棋盤上分布的各種可能的格局數目非常大,約等於2的32次方種,但是,可以將一些明顯不滿足問題要求的格局排除掉。由於任意兩個皇后不能同行,即每行只能放置乙個皇后,因此將第i個皇后放在第i行上,這樣在放置第i個皇后時,只要考慮它與前i-i個皇后處於不同列和不同對角線位置上即可。

二、構建設想:

解決這個問題採用回溯法,首先將第乙個皇后放置在第一行第一列,然後,依次在下一行上放置乙個皇后,直到八個皇后全部放置安全。在放置每個皇后時,都依次對每一列進行檢測,首先檢測放在第一列是否與已放置的皇后衝突,如不衝突,則將皇后放置在該列,否則,選擇改行的下一列進行檢測。如整行的八列都衝突,則回到上一行,重新選擇位置,依次類推。。

使用C 實現的N皇后問題

八皇后問題是乙個古老而著名的問題,是回溯演算法的經典問題。該問題是十九世紀著名的數學家高斯在1850年提出的 在8 8的西洋棋棋盤上,安放8個皇后,要求沒有乙個皇后能夠 吃掉 任何其它乙個皇后,即任意兩個皇后不能處於同一行,同一列或者同一條對角線上,求解有多少種擺法。高斯認為有76種方案。1854年...

使用C 實現的N皇后問題

一 專案簡介 八皇后問題是乙個古老而著名的問題,是回溯演算法的經典問題。該問題是十九世紀著名的數學家高斯在1850年提出的 在8 8的西洋棋棋盤上,安放8個皇后,要求沒有乙個皇后能夠 吃掉 任何其它乙個皇后,即任意兩個皇后不能處於同一行,同一列或者同一條對角線上,求解有多少種擺法。高斯認為有76種方...

八(N)皇后問題的C 實現

簡單說 任意兩個皇后 西洋棋 都不能處於同一行 同一列或同一斜線上。c 實現如下 include using namespace std isplace 用於判斷會不會跟之前已放置的皇后互相攻擊,int count 0 bool isplace int a,int k return true 遞迴窮...