給定乙個 n*n 的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入 n 個黑皇后和 n 個白皇后,使任意的兩個黑皇后都不在同一行、
同一列或同一條斜線(包括正負斜線)上,任意的兩個白皇后都不在同一行、同一列或同一條斜線(包括正負斜線)上。問總共有多少種放法?n
小於等於 8。
輸入的第一行為乙個整數 n,表示棋盤的大小。接下來 n 行,每行 n 個 0 或 1 的整數,如果乙個整數為1,表示對應的位置可以放皇后,如
果乙個整數為 0,表示對應的位置不可以放皇后。
輸出乙個整數,表示總共有多少種放法。
41 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
2
41 0 1 1
1 1 1 1
1 1 1 1
1 1 1 1
2
解題思路這題本質和n皇后差不多,只需要找到黑皇后的一種方法後再找白皇后的方法,並使得黑白皇后不在同一格且再加上了乙個限制而已。(不會
n皇后的同學可以先去看一看)
題解
1 #include2using
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...