可根據更改line、queennumberd的值,任意更改遊戲規則
#include
#include
#include
#define line 8
#define queennumber 8
void
fun(
int i,
int j)
;bool judge
(int i,
int j)
;void
print
(void);
int map[line]
[line]
;int ans =0;
intmain
(void
)void
fun(
int i,
int j)if(
judge
(i, j)
==true
)else
} map[i]
[j]=0;
//如果此位置不能放,就置空(0),判斷下列的格仔。
//如果此位置能放,走到這裡就意味著上面的**全部執行了,把皇后拿走(置零),再討論其他情況,拿下列位置試探。
fun(i +
1, j);}
bool judge
(int i,
int j)
for(k =
0; k < line; k++
)for
(k =
-line; k <= line; k++
)return
true;}
void
print
(void
)printf
("\n\t");
}printf
("\n********************====\n\n");
}
八皇后及任意多皇后問題解法之遞迴解法
遞迴解法的基本原理是把乙個大問題拆分成幾個類似的小問題,小問題繼續拆解成更小的問題,直到不能拆解的單元問題為止,再把所有單元問題的解匯集成問題的全部解。就八皇后問題而言,可以先擺第一列,共八種位置選中,每種位置選擇下,剩餘的八行七列中繼續擺放其他皇后,即變成了八個 八行七列棋盤擺七個皇后問題 的解的...
8皇后位操作解法
include using namespace std long sum 0 用來記錄皇后放置成功的不同布局數 long upperlim 1 8 1 這是八皇后的位置 試探演算法從最右邊的列開始 void test long row,long ld,long rd row,ld,rd進行或運算,求...
遞迴 基於排列的八皇后問題解法
以下 劉海濤個人部落格 題目 在8 8的西洋棋上擺放八個皇后,使其不能相互攻擊,即任意兩個皇后不得處在同一行 同一列或者同一對角斜線上 並不僅只是最長的兩條對角線 下圖中的每個黑色格仔表示乙個皇后,這就是一種符合條件的擺放方法。請求出總共有多少種擺法。這就是有名的八皇后問題。解決這個問題通常需要用遞...