八皇后的12組等效解

2021-09-02 23:01:46 字數 832 閱讀 1124

請使用回溯法程式設計,輸出8皇后的所有解,並統計其中等效解的個數(所謂等效解是指,如果將解a 上下翻轉,左右翻轉,90度旋轉等任意組合,如果能得到b,則稱a和b為等效解)

要求:1.輸出形式:如果有n個等價類

組1:共10個

(1,2,...,..x8)

......

組2:共...個

組n:共...個

.....

其中(x1,x2,..x8)的含義是在棋盤第1...8行中皇后的位置依次是x1...x8

2.實現建議:生成解後將解儲存為無向圖,求該圖的連通分量

#includeusing namespace std;

#include#include#define n 8

int s=1;

int sum=0,count=0,m=1,row=0;

int a[n][n],b[2*n][n],c[100][n],x[100];

//陣列b的第乙個下標為不等效解得數目,第二個下標為8皇后所在列數

八皇后12種本質不同的解

在八皇后的92種解中有大量的解是本質重複的 可以通過左右對稱,上下對稱,對角線對稱,旋轉來互相轉化 只有十二種解是本質不同的。include int w 1 intcheck int m void put void intcheck3 void intcheck2 void void firstdi...

DFS解八皇后

我是學習這個部落格的 八皇后問題 dfs常規解法 dfs還是用的不太靈活 題目的思路很中重要 分界線 用一維陣列儲存每一行的列數,從第一行開始深搜,對於每一行i,對從1到8列進行判斷是否符合,符合就加入,然後深搜下一層。include using namespace std int s int a ...

12 八皇后問題

定義乙個max表示共有多少個皇后 int max 8 定義陣列array,儲存皇后放置位置的結果,比如 arr int array new int max static int count 0 static int judgecount 0 特別注意 check 是 每一次遞迴時,進入到check中...