原始碼和文件分享 基於C 實現的N皇后問題

2021-09-25 05:37:05 字數 663 閱讀 4298

1 專案簡介

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

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

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

2 專案功能要求

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

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

原始碼和文件分享 基於C 實現的N皇后問題

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

原始碼和文件分享 基於C 實現的N皇后問題

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

原始碼和文件分享 使用C 實現的N皇后問題

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