代码
#include<iostream>
#include<algorithm>
using namespace std;
int cur,sum=0,n;
int a[25],b[13];
int ok(int x){
int i;
for(i=1;i<x;i++)
{
//判断是否同列了或在相同斜线
if(a[i]==a[x]||abs(a[i]-a[x])==abs(i-x))
return 1;
}
return 0;
}
int func(int q){
for(int i=1;i<=n;i++)
{
a[q]=i;
if(ok(q)==0){//如果当前行放的于前面没有冲突就试探下去
if(q==n) {
// for(int j=1;j<=n;j++)
// printf("(%d,%d)",j,a[j]);
// cout<<endl;
sum++;
}
else
func(q+1);
}
}
}
int main(){
for(int i=1;i<=10;i++)
{ n=i;
sum=0;
func(1);
b[i]=sum;
}
//freopen("in.txt","r",stdin);
while(cin>>n&&n){
cout<<b[n]<<endl;
}
return 0;
}