給定乙個n*n的棋盤,棋盤中有一些位置不能放皇后。
現在要向棋盤中放入n個黑皇后和n個白皇后,使任意的兩個黑皇后都不在同一行、同一列或同一條對角線上
任意的兩個白皇后都不在同一行、同一列或同一條對角線上。
問總共有多少種放法?n小於等於8。
輸入輸入的第一行為乙個整數n,表示棋盤的大小。
接下來n行,每行n個0或1的整數
如果乙個整數為1,表示對應的位置可以放皇后,如果乙個整數為0,表示對應的位置不可以放皇后。
輸出輸出乙個整數,表示總共有多少種放法。
樣例輸入 copy
41 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
樣例輸出 copy我的**:
#include
using namespace std;
int map[
10001][
10001];
int res[
10001][
10001];
bool bx[
10001];
bool by[
10001];
bool bl[
10001
],br[
10001];
bool wx[
10001];
bool wy[
10001];
bool wl[
10001
],wr[
10001];
int n,sum;
void
ouput()
cout
wdfs
(int index)
for(
int i=
1;i<=n;i++)}
}}void
dfs(
int index)
for(
int i=
1;i<=n;i++)}
}}intmain()
}for
(int i=
1;i<=n;i++
)dfs(1
);cout
}
大佬的**:
#include
using namespace std;
int ways =0;
bool feasible
(int row,
int col,
int n,
int board[
100]
[100],
int color)
//右下
for(
int i =
1;i <= n - row && i <= n - col;i++
)for
(int i =
1;i <= row && i <= n - col;i++
)for
(int i =
1;i <= row && i <= col;i++
)for
(int i =
1;i <= n - row && i <= col;i++
)return true;
}void
queen
(int t,
int n,
int board[
100]
[100],
int row,
int col,
int color)
}int flag =0;
int color_t =
(color ==0)
?2:3
;for
(int i = row;i < n;i++)}
}}intmain()
}queen(0
,n,board,0,
0,0)
; cout
}
藍橋杯題目練習 提公升篇 藍橋杯 分解質因數
求出區間 a,b 中所有整數的質因數分解。輸入輸入兩個整數a,b。2 a b 10000 輸出每行輸出乙個數的分解,形如k a1a2a3 a1 a2 a3 k也是從小到大的 具體可看樣例 樣例輸入 copy 3 10 樣例輸出 copy 3 34 22 5 56 23 7 78 222 9 33 1...
藍橋杯 2N皇后
問題描述 給定乙個n n的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入n個黑皇后和n個白皇后,使任意的兩個黑皇后都不在同一行 同一列或同一條對角線上,任意的兩個白皇后都不在同一行 同一列或同一條對角線上。問總共有多少種放法?n小於等於8。輸入格式 輸入的第一行為乙個整數n,表示棋盤的大小。接...
藍橋杯 2n皇后
資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 給定乙個n n的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入n個黑皇后和n個白皇后,使任意的兩個黑皇后都不在同一行 同一列或同一條對角線上,任意的兩個白皇后都不在同一行 同一列或同一條對角線上。問總共有多少種放法?n小於等於...