#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int c[20], n, cnt=0;
void dfs(int r)
{
int i,j,ok;
if(r == n)
{
++cnt;
return;
}
for(i=0; i<n; ++i)
{
c[r] = i;
ok = 1;
for(j=0; j<r; ++j)
if(c[r]==c[j] || r-j==c[r]-c[j] || r-j==c[j]-c[r])
{
ok = 0;
break;
}
if(ok)
{
dfs(r+1);
c[r]=0;
}
}
}
int main()
{
while(~scanf("%d",&n))
{
if(n==0||n>10) break;
cnt=0;
dfs(0);
printf("%d\n",cnt);
}
return 0;
}
N皇后种数
最新推荐文章于 2021-02-28 00:42:28 发布