HDU 2553 N皇后問題 (DFS 回溯)

2021-07-11 16:58:23 字數 638 閱讀 6861

大意:n皇后在n*n的棋盤上,要任意兩皇后不能同行列並且在與x成45度的地方也不能有皇后。

思路:主要是判斷與對角線平行的地方的皇后是否有衝突,我們可以用乙個mp【】陣列下標為行值為列。兩mp值是否相等||mp[x]-x==mp[y]-y||mp[x]+x==mp[y]+y

#include#include#include#include#include#include#include#include#define ll int

#define inf 0x3f3f3f3f

#define eps 1e-8

#include#define ls l,mid,rt<<1

#define rs mid+1,r,rt<<1|1

using namespace std;

int ans,n,cnt[15],mp[15];

bool vis[15];

void dfs(int step)

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

}if(!bj)}}

}int main()

while(~scanf("%d",&n)&&n)

return 0;

}



HDU2553 N皇后問題(DFS)

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

HDU2553 N皇后問題(dfs)

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

HDU2553 N皇后問題 DFS

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