题目:http://blog.chinaunix.net/uid-26602509-id-3178970.html
代码:
#include<stdio.h>
#include<string.h>
using namespace std;
int tot=0,row,line[10],n;
int search(int row)
{
int i,j;
if(row==n)
{
tot++;
}
else
{
for(i=0;i<n;i++) // i < n
{
int ok=1;
line[row]=i;
for(j=0;j<row;j++) // i < row
{
if(line[row]==line[j]||line[row]-row==line[j]-j||line[row]+row==line[j]+j)
{
ok=0;
break;
}
}
if(ok)
{
search(row+1);
}
}
}
}
int main()
{
int a[11];
for(n=1;n<=10;n++) //预处理
{
tot=0;
search(0);
a[n]=tot;
}
while(scanf("%d",&n)!=EOF&&n)
{
printf("%d\n",a[n]);
}
}