基於C語言實現的N皇后問題

2021-09-25 09:31:31 字數 663 閱讀 7994

1 專案簡介

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

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

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

2 專案功能要求

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

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

基於C語言實現的N皇后問題

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

基於C語言實現的N皇后問題

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

N皇后問題 c語言實現

問題描述 有乙個n n的棋盤,在這個棋盤中放n個皇后,使得這n個皇后,任意兩個皇后不在同一行,同一列,同一條對角線。例如,當n等於4時,有兩種擺法。輸入只有乙個整數n。思路如果我們是從這個n n的棋盤中選取n個方格放皇后,再去判斷是否滿足條件的話,則效率會非常低,這是乙個組合數 complement...