N皇后問題 HDU 2553

2021-08-03 22:41:43 字數 835 閱讀 6978

在n*n的方格棋盤放置了n個皇后,使得它們不相互攻擊(即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。 

你的任務是,對於給定的n,求出有多少種合法的放置方法。

input

共有若干行,每行乙個正整數n≤10,表示棋盤和皇后的數量;如果n=0,表示結束。
output

共有若干行,每行乙個正整數,表示對應輸入行的皇后的不同放置數量。
sample input

185

0

sample output

1

9210

思路:

可以看出同一對角線的座標有個特點,他們的對應的座標的和或者差的絕對值相等,因此,我們可以用幾個陣列來判斷皇后是否處於同一對角線和同一行.

而這裡我們從第一列一直往後面安排皇后,可以減少乙個需要判斷的陣列

**:

#include

#include

#include

#include

#include

using

namespace

std;

bool a[30],b[30],c[30];

int an[20];

int ans,n;

void dfs(int x)

}}int main()

while(scanf("%d",&n)!=eof&&n)

N皇后問題 HDU 2553

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

N皇后問題 HDU 2553

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

N皇后問題 HDU 2553

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