2n皇后問題

2021-09-11 03:11:25 字數 890 閱讀 1724

題目:

**如下:

#includeusing namespace std;

int a[10][10],ans,n,vy[10],vv1[10],vv2[10];

//vy,v1,vv2分別有四種狀態0是黑白皇后都沒放,1是放了黑皇后,2是放了白皇后,3是都放了

void dfs(int x,int p)

//兩個皇后都放好了

if(p == 1 && x == n)//黑皇后放好,開始放白皇后

for(int i = 0;i < n;i++) }}

int main()

這道題基本思路就是先放黑皇后然後再放白皇后,假設放黑皇后時p = 1,放白皇后時p = 3。因為剛開始先放黑皇后所以先傳入1,這裡我是先從第一行開始,然後第二,第三…一直這樣下去。bfs時當x = n了,說明此時某種皇后已經放好了,如果此時p=1,那就說明黑皇后放好了,此時需要再次dfs並將p改為3(從此開始只放白皇后了),如果p = 3,那就說明都已經放好了,這裡需要將次數加一然後返回就可以了。

每次dfs進行選擇放置皇后的時候都需要滿足一系列條件:當a[i][j] = 0表示不可放皇后了,還有就是傳統8皇后的限制:行列,兩條對角線不能放在一起。只是需要開三個陣列分別來對列和兩條對角線進行判重,具體過程上述**有,這裡就不重複了。

總體來說這道題是在八皇后問題上再進一步,個人覺得是一道不錯的題。

2n皇后問題

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

2n皇后問題

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

2n皇后問題

基礎練習 2n皇后問題 時間限制 1.0s 記憶體限制 512.0mb 問題描述 給定乙個n n的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入n個黑皇后和n個白皇后,使任意的兩個黑皇后都不在同一行 同一列或同一條對角線上,任意的兩個白皇后都不在同一行 同一列或同一條對角線上。問總共有多少種放...