請使用回溯法程式設計,輸出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中...