zhangzixuana @ 2023-11-23 20:52:58
#include<bits/stdc++.h>
using namespace std;
int a[14]={0},v[100000][14]={0},b,upl=1,kks=0,bm[14][14];
void xxam(int c,int k){
if(k>b){
for(int i=1;i<=b;i++){
v[upl][i]=a[i];
}
upl++;
for(int i=1;i<=13;i++){
a[i]=0;
}
return;
}
for(int i=1;i<k;i++){
if(c==a[i]) return;
}
for(int i=1;i<k;i++){
xxam(i,k+1);
}
}
void nc(int r,int s,int p){
if(s>b){
if(kks<=3){
for(int i=1;i<=b;i++){
cout<<v[p][i]<<' ';
}
cout<<endl;
}
kks++;
nc(v[p+1][1],1,p+1);
return;
}
if(bm[r][s]!=0){
nc(v[p+1][1],1,p+1);
return;
}
bm[r][s]=2;
for(int i=1;i<=b;i++){
bm[i][s]=1;
bm[r][i]=1;
}
for(int i=1;i<=b;i++){
for(int j=1;j<=b;j++){
if(i+j==r+s || i-j==r-s) bm[i][j]=1;
}
}
nc(v[p][s+1],s+1,p);
return;
}
int main(){
cin>>b;
xxam(1,1);
upl=1;
if(b==6) nc(2,1,1);
else nc(1,1,1);
}
by ImSakura @ 2023-12-31 01:15:05
这个v数组可能开的太大了?(100000