题目
代码:
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
int n,e[14];
bool a[14],b[27],c[27];
void print(){
for(int i=1;i<=n;i++){
printf("%d ",e[i]);
}
printf("\n");
}
int dfs(int dep){
if(dep==n+1){
print();
}
else{
for(int i=1;i<=n;i++){
if(a[i]&&b[dep+i-1]&&c[dep-i+n]){
e[dep]=i;
a[i]=false;
b[dep+i-1]=false;
c[dep-i+n]=false;
dfs(dep+1);
a[i]=true;
b[dep+i-1]=true;
c[dep-i+n]=true;
}
}
}
}
int main(){
scanf("%d",&n);
memset(a,true,sizeof(a));
memset(b,true,sizeof(b));
memset(c,true,sizeof(c));
dfs(1);
return 0;
}