#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int search(int);
int print();
int n,sum = 0;
int f[1001],b[1001] = {0},c[2002] = {0},d[2002] = {0};
int main(){
cin>>n;
search(1);
system("pause");
}
int search(int t){
int i;
for(i = 1; i <= n; i++){
if((!b[i])&&(!c[t+i])&&(!d[t-i+n-1])){
f[t] = i;
b[i] = 1;
c[t+i] = 1;
d[t-i+n-1] = 1;
if(t == n){
print();
}else{
search(t+1);
}
b[i] = 0;
c[t+i] = 0;
d[t-i+n-1] = 0;
}
}
}
int print(){
cout<<"<"<<++sum<<">:"<<endl;
for(int i = 1; i <= n; i++){
for(int j = 1; j < f[i]; j++) cout<<".";
cout<<"x";
for(int j = f[i]+1; j <= n; j++) cout<<".";
cout<<endl;
}
}
<P>n solution(n) <BR>
1 1
2 0
3 0
4 2
5 10
6 4
7 40
8 92
9 352
10 724
11 2680
12 14200
13 73712
14 365596
15 2279184
16 14772512
17 95815104
18 666090624
19 4968057848
20 39029188884
21 314666222712
22 2691008701644
23 24233937684440
24 227514171973736
25 2207893435808352
</P>
<P>以上结果可以作为测试案例验证程序。</P>