#include<cstdio>
#include<cstdlib>
#include <cmath>
#define MAXN 50
int num = 0;
void NQueens(int n, int AB[], int cur) // cur == current
{
if (cur >= n)
++num;//说明已经枚举完毕,成立
else
{
for (int i = 0; i < n; i++)//遍历新一行可能的列
{
int ok = 1;
for(int j=0; j<cur; j++)//遍历已经排好的行
if (AB[j] == i || abs(cur - j) == abs(i - AB[j]))
{
ok = 0;
break;
}
if (ok)
{
AB[cur] = i;
NQueens(n, AB, cur + 1);
}
}
}
}
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int n, AB[MAXN];
scanf("%d", &n);
NQueens(n, AB, 0);
printf("%d\n", num);
num = 0;
}
return 0;
}
N皇后
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一、用枚举法实现思路:枚举所有的可能来,可以看成一个树形结构,到了叶子节点再去判断是不是可行解 二、用回溯法实现思...
- 题目描述 The n-queens puzzle is the problem of placing n quee...