問題 d: 八皇后
時間限制: 1 sec 記憶體限制: 32 mb
題目描述
會下西洋棋的人都很清楚:皇后可以在橫、豎、斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上(有8 * 8個方格),使它們誰也不能被吃掉!這就是著名的八皇后問題。
對於某個滿足要求的8皇后的擺放方法,定義乙個皇后串a與之對應,即a=b1b2…b8,其中bi為相應擺法中第i行皇后所處的列數。已經知道8皇后問題一共有92組解(即92個不同的皇后串)。
給出乙個數b,要求輸出第b個串。串的比較是這樣的:皇后串x置於皇后串y之前,當且僅當將x視為整數時比y小。
輸入第1行是測試資料的組數n,後面跟著n行輸入。每組測試資料佔1行,包括乙個正整數b(1 <= b <= 92)
輸出輸出有n行,每行輸出對應乙個輸入。輸出應是乙個正整數,是對應於b的皇后串。
樣例輸入
3 6
4 25
樣例輸出
25713864
17582463
36824175
解題思路
dfs層層遍歷,找出符合要求的陣列
submission
#include
#include
#include
#include
#define n 8
typedef
struct point point;
point pts[n];
typedef
struct
string string;
string strs[93];
int windex, count;
int isok(int x, int y)
} return flag;
}void bfseight(int level)
strs[windex].str[i] = '\0';
windex ++;
} else }}}
int cmp(const
void *p, const
void *q)
int main(void)
return
0;}
演算法學習之路 N皇后問題
n皇后問題,在棋盤上放n個皇后,要求互相之間不能攻擊,求問有多少種情況 輸入格式 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。輸出格式 共有若干行,每行乙個正整數,表示對應輸入行的皇后的不同放置數量。輸入樣例 18 50輸出樣例 192 10八皇后問題的拓展,回溯...
演算法 n皇后問題
題目描述 乙個 n n 的棋盤,要在上面放 n 個皇后。規則 兩個皇后之間如果是同列 同行 同對角線它們會互相攻擊。也就 是 說 棋盤上的任意兩個皇后不能為同列 同行 同對角線。演算法思想 q j 表示乙個解的空間即儲存一組可行解的陣列,j表示行數,q j 的值表示j行可以放置皇后的所在列數,根據任...
(演算法)N皇后問題
八皇后問題 在8 x 8的西洋棋上擺放八個皇后,使其不能相互攻擊,即任意兩個皇后不得處於同一行,同一列或者同意對角線上,求出所有符合條件的擺法。1 回溯法 資料結構 由於8個皇后不能處在同一行,那麼肯定每個皇后佔據一行,這樣可以定義乙個陣列a 8 陣列中第i個數字,即a i 表示位於第i行的皇后的列...