50 lines
888 B
Plaintext
50 lines
888 B
Plaintext
int ans[50], sum = 0, n;
|
|
|
|
int row[50], line1[50], line2[100];
|
|
|
|
void printans()
|
|
{
|
|
sum = sum + 1;
|
|
int i = 1;
|
|
while (i <= n) {
|
|
putint(ans[i]);
|
|
if (i == n) {
|
|
putch(10);
|
|
return;
|
|
} else
|
|
putch(32);
|
|
i = i + 1;
|
|
}
|
|
}
|
|
|
|
void f(int step)
|
|
{
|
|
int i = 1;
|
|
while (i <= n) {
|
|
if (row[i] != 1 && line1[step + i] == 0 && !line2[n + step - i]) {
|
|
ans[step] = i;
|
|
if (step == n)
|
|
printans();
|
|
row[i] = 1;
|
|
line1[step + i] = 1;
|
|
line2[n + step - i] = 1;
|
|
f(step + 1);
|
|
row[i] = 0;
|
|
line1[step + i] = 0;
|
|
line2[n + step - i] = 0;
|
|
}
|
|
i = i + 1;
|
|
}
|
|
}
|
|
|
|
int main()
|
|
{
|
|
int N = getint();
|
|
while (N > 0) {
|
|
n = getint();
|
|
f(1);
|
|
N = N - 1;
|
|
}
|
|
return sum;
|
|
}
|