int x[9];
int sum=0;
int num=8;
bool place(int k)
{
for(int j = 1;j<k;j++)
if(abs(x[k] - x[j]) == abs(k-j)||x[j] == x[k])
return false;
return true;
}
void backtrack(int t)
{
if(t>num) //num为皇后的数目
{
sum++;
}
else
for(int i = 1;i<=num;i++)
{
x[t] = i;
if(place(t))
backtrack(t+1);
}
}