#include <stdio.h>
#include <math.h>
int max ;
int queen[100], sum = 0;
void show()
int i;
for (i = 0; i < max; i++) {
printf("%d ", queen[i] + 1);
}
printf("\n");
sum++;
}
int PLACE(int n)
{
int i;
for (i = 0; i < n; i++)
{
if (queen[i] == queen[n] || abs(queen[i] - queen[n]) == abs(n - i))
{
return 0;
}
}
return 1;
}
void NQUEENS(int n)
{
int i;
for (i = 0; i < max; i++)
{
queen[n] = i;
if (PLACE(n))
{
if (n == max - 1)
{
show();
}
else
{
NQUEENS(n + 1);
}
}
}
}
int main()
{
printf("input:");
scanf("%d",&max);
NQUEENS(0);
printf("\n");
printf("总共的解法有%d种\n", sum);
return 0;
}