計蒜客 2N皇后問題

2022-08-01 11:03:12 字數 1399 閱讀 9545

給定乙個 n*n 的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入 n 個黑皇后和 n 個白皇后,使任意的兩個黑皇后都不在同一行、

同一列或同一條斜線(包括正負斜線)上,任意的兩個白皇后都不在同一行、同一列或同一條斜線(包括正負斜線)上。問總共有多少種放法?n

小於等於 8。

輸入的第一行為乙個整數 n,表示棋盤的大小。接下來 n 行,每行 n 個 0 或 1 的整數,如果乙個整數為1,表示對應的位置可以放皇后,如

果乙個整數為 0,表示對應的位置不可以放皇后。

輸出乙個整數,表示總共有多少種放法。

4

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

2

4

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

2

解題思路

這題本質和n皇后差不多,只需要找到黑皇后的一種方法後再找白皇后的方法,並使得黑白皇后不在同一格且再加上了乙個限制而已。(不會

n皇后的同學可以先去看一看)

題解

1 #include2

using

namespace

std;

3int n,num=0;4

bool l[10001];5

bool x[10001];6

bool y[10001

];//黑皇后的判斷78

bool l_[10001];9

bool x_[10001

];10

bool y_[10001

];//白皇后的判斷

11bool mp[10001][10001

];//公用地圖

12void queenw(int

ans);

13void queenb(int

ans)//黑皇后搜尋

1420

for(int j=1;j<=n;j++)

2134}35

return;36

}37void queenw(int

ans)//白皇后搜尋

3843

for(int j=1;j<=n;j++)

4455}56

return;57

}58intmain()

5967

}68 queenb(1

);//從黑皇后開始搜

69 cout<70return0;

71 }

計蒜客 2n皇后問題

題目描述 給定乙個 n n 的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入 n 個黑皇后和 n 個白皇后,使任意的兩個黑皇后都不在同一行 同一列或同一條對角 線上,任意的兩個白皇后都不在同一行 同一列或同一條對角線上。問總共有多少種放法?n 小於等於8 輸入格式 輸入的第一行為乙個整數 n ...

2n皇后問題

問題描述 在n n的矩陣中放入n個白皇后和n個黑皇后,該矩陣由元素 和 組成,代表該位置不能放皇后,代表可以放皇后,n個的皇后兩兩不能在同一行和同一列以及同一對 角線上,n個黑皇后兩兩不能在同一行和同一列以及同一對角線上。求最多有幾種放法?解法 這個問題跟 皇的問題類似,只不過多了另外一種顏色的皇后...

2n皇后問題

問題描述 給定乙個 n n 的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入 n 個黑皇后和 n 個白皇后,使任意的兩個黑皇后都不在同一行 同一列或同一條對角線上,任意的兩個白皇后都不 在同一行 同一列或同一條對角線上。問總共有多少種放法?n 小於等於 8。輸入格式 輸入的第一行為乙個整數 n...