藍橋杯 2n皇后問題 演算法筆記

2021-10-05 01:45:30 字數 1069 閱讀 1619

「2n皇后」問題本質上還是 用 dfs 寫「8皇后」問題。

先確定黑皇后的排列,再確定白皇后的排列。

此**特色:

1)用一維陣列posb[maxn]、posw[maxn]即可表示黑白皇后的擺放。

eg. posb[2]=1 表示黑皇后在第二行第一列放一枚。

2)if( posw[i] == posw[cur] || abs(i-cur) == abs(posw[i]-posw[cur]))

這個是本程式的關鍵**。可判斷是否有同列(不可能同行),左右斜對角線的皇后。

完整**:

#include

#include

using

namespace std;

const

int maxn =10;

int n;

int map_q[maxn]

[maxn]

;int posb[maxn]=;

int posw[maxn]=;

int ans;

bool

checkw

(int cur)

//檢查函式

return

true;}

bool

checkb

(int cur)

//檢查函式

return

true;}

void

dfs_white

(int cur)

for(

int i =

1; i <= n; i++)}

void

dfs_black

(int cur)

for(

int i =

1; i <= n; i++

)//表示 放第 cur行的 第 i列

}int

main()

藍橋杯 2n皇后問題

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

藍橋杯 2n皇后問題

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

藍橋杯 2n皇后問題

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