最原始DFS ,n代表棋盘是n*n的
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std ;
int a[1000] ;
int cnt,n ;
void dfs(int cur)
{
if(cur == n)
cnt++ ;
else for(int i = 0 ;i<n ;i++)
{
int ok = 1 ;
a[cur] = i ;
for(int j = 0 ;j<cur ;j++)
{
if(a[j] == a[cur] || (a[j]+j==a[cur]+cur) || (a[j]-j==a[cur]-cur))
{
ok = 0 ;
break ;
}
}
if(ok)
{
dfs(cur+1) ;
}
}
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
cnt = 0 ;
dfs(0) ;
printf("%d\n",cnt) ;
}
}