大意: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,表示棋盤和皇后的數量 如...