深度優先搜尋 HDU 2553 N皇后問題

2021-07-03 14:59:43 字數 533 閱讀 4575

今天的主菜是搜尋,想起來初中就聽過八皇后問題了啊。。。當年有乙個學程式設計的機會在我眼前我沒有去珍惜,到現在我只能默默後悔。。。嘛,其實我也沒那麼在意啦

皇后的移動方式是直線和斜線不限長移動,畢竟最強兵種。

所以每一行必然只有乙個皇后,因此我們可以選擇以每行為單位來進行dfs(深度優先搜尋)。

然後是豎向和斜向,豎向只要位置不同就可以了,用乙個bool型陣列來記錄,斜向的話,只要x+y不同和x-y不同就可以保證不同行。

然後筆者就被坑了。。。

原因不明,但是肯定是出題者的陰謀。總之肯定是給了很多資料,因此我們需要預先處理一下,用乙個陣列儲存現有的10種狀態。

#include#include#include#includeusing namespace std;

bool side1[25],side2[25];

bool vis[11];

int n;

int ans;

int answer[20];

void dfs(int x)

for(int i=0;i

ACM 搜尋 HDU 2553 N皇后問題

problem description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如...

HDU 2553 N皇后問題

題目 problem description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數...

HDU 2553 N皇后問題

復健。一題經典的回溯法,要打表。include define max n 11 int n,res int c max n ans max n void dfs int cur if flag dfs cur 1 int main int m while scanf d m m printf d n...