菜雞能有什麼好想法?暴力就完了。
在一張n∗n的西洋棋棋盤上,放置n個皇后,使得所有皇后都無法互相直接攻擊得到,(皇后可以直接攻擊到她
所在的橫行,豎列,斜方向上的棋子),現在輸入乙個整數n,表示在n∗n的棋盤上放n個皇后,請輸出共有多少種使
得所有皇后都無法互相直接攻擊得到的方案數。 例如下面這樣的擺法,是4皇后的乙個解 (1代表有皇后,0代表沒有)
0 1 0 0
0 0 0 1
1 0 0 0
0 0 1 0
輸入乙個整數 n
輸出能使得在n∗n的西洋棋棋盤上放置n個皇后,並且所有皇后都無法互相直接攻擊得到的方案數
樣例輸入
樣例輸入1:
4 樣例輸入2:
8
樣例輸出
樣例輸出1
2 樣例輸出2
92
暴力思路:
觀察規律感覺類似於全排列的變式,將全排列中數字出現的順序看作x座標,數字大小為y座標,所有皇后的排列情況即可表示出來。
限制條件:皇后攻擊範圍為公尺字,從座標中體現為x值、y值不能相同。在過皇后座標斜率為正負一的直線上不能有棋子。x、y方向由於看作數字全排列問題則不可能相等故無需考慮。對於斜線上情況能夠相互攻擊的條件為x+y=n或x-y=m,兩棋子m或n相同。故兩棋子取到的m、n值不能相同。
**:
#include
int n, num =0;
char map[50]
[50];
//象棋棋盤
bool b[50]
, c[50]
, d[50]
;//斜率為1的限制值 斜率為-1的限制值 行限制值
void
dfs(
int m)
for(
int i =
0; i < n; i++)}
}int
main()
}dfs(0
);printf
("%d"
, num)
;return0;
}
菜雞的dfs學習 n 皇后問題
n 皇后問題是指將 n 個皇后放在 n n 的西洋棋棋盤上,使得皇后不能相互攻擊到,即任意兩個皇后都不能處於同一行 同一列或同一斜線上。現在給定整數n,請你輸出所有的滿足條件的棋子擺法。共一行,包含整數n n 10 每個解決方案佔n行,每行輸出乙個長度為n的字元 串,用來表示完整的棋盤狀態。其中 表...
菜雞的dfs學習 n 皇后問題
n 皇后問題是指將 n 個皇后放在 n n 的西洋棋棋盤上,使得皇后不能相互攻擊到,即任意兩個皇后都不能處於同一行 同一列或同一斜線上。現在給定整數n,請你輸出所有的滿足條件的棋子擺法。共一行,包含整數n n 10 每個解決方案佔n行,每行輸出乙個長度為n的字元 串,用來表示完整的棋盤狀態。其中 表...
N皇后問題公式解
分類 一 當n mod 6 2 且 n mod 6 3時,有乙個解為 2,4,6,8,n,1,3,5,7,n 1 n 為偶數 2,4,6,8,n 1,1,3,5,7,n n 為奇數 上面序列第i個數為ai,表示在第i行ai列放乙個皇后 省略的序列中,相鄰兩數以2遞增。下同 二 當n mod 6 2 ...