遞迴演算法之八皇后

2021-08-25 02:38:53 字數 792 閱讀 8580

八皇后問題核心:

1:同一行或者同一列不能放置皇后;

2:斜率為1/-1的對角線上不能有兩個皇后。

如圖:

實現原理:

#include

#include

using std::cout;

using std::endl;

int count = 0;

int detection(int(*board)[8], int line, int row)//board:棋盤,line:行,row:列

}//斜率為1/-1對角線判斷

b1 = row - line;//y=kx+b

b2 = line + row;//y=-kx+b

for (int j = 0; j }

int recursive(int(*board)[8], int line, int row)//board:棋盤,line:行,row:列  遞迴函式

cout << count << endl;

}else//遞迴呼叫

//line+1:前一級的遞迴函式中的line沒有被改變}}

return 0;

}void main()

;int line=0;//行

int row=0;//列

recursive(board, line, row);

system("pause");

}

八皇后 遞迴演算法

在8 8格的西洋棋上擺放8個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年在柏林的象棋雜誌上不同的作者發表了40種不同的解,後來有人用圖論的方法解出92種結果。如果經過 90度 180度旋轉,和對角線對稱變換的擺法看成一類...

八皇后遞迴演算法

include 規則 在8x8的棋盤內放置八個皇后,並且保證每個皇后是安全的。分析 每個皇后必須單獨一行,用乙個陣列來表示她們所在列的位置,下標代表所在行的位置。int aqueen 8 儲存結果 bool analyzepoint int x,int y 規則檢測,檢測當前位置是否和已有位置衝突 ...

遞迴之八皇后

前言 對於接觸過程式設計的朋友來說,最開始了解的演算法莫過於貪心或者遞迴 而提到遞迴,除了本博文前面介紹的漢諾塔問題以外,還有乙個比較有趣的問題 八皇后問題。現在就跟大家理一理,分享一下 的實現思路。八皇后問題指如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后...