OIer_hzn @ 2023-02-07 20:05:09
RE
36
//
// main.cpp
// IDE
//
// Created by aa on 2022/12/30.
//
//
//
#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
#include <queue>
#include <cstdio>
using namespace std;
#define ll long long
//#pragma G++ optimize(2)
//#pragma G++ optimize(3)
void inp_io(){
std::ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
}
const ll N=105;
int fx[20]={-1,0,1,0,-1,1,1,-1};
int fy[20]={0,1,0,-1,1,-1,1,-1};
bool vis[N][N];
int a[N][N];
int b[N];
ll n,m,len;
ll ans=0;
int k=0;
// insert code here...
void dfs(int step){
if(step==n+1){
k++;
for(int i=1;i<=n;i++){
a[k][i]=b[i];
}
return;
}
for(int i=1;i<=n;i++){
if(vis[0][i]==0&&vis[1][step+i]==0&&vis[2][step-i+8]==0){
vis[0][i]=1;
vis[1][step+i]=1;
vis[2][step-i+8]=1;
b[step]=i;
dfs(step+1);
vis[0][i]=0;
vis[1][step+i]=0;
vis[2][step-i+8]=0;
}
}
}
//void inp(){
// cin>>n;
//}
//void work(){
// dfs(1);
// while(n--){
// int t;
// cin>>t;
// for(int i=1;i<=8;i++){
// cout<<a[t][i];
// }
// cout<<endl;
// }
//}
int main(){
//inp_io();
//inp();
//work();
cin>>n;
dfs(1);
for(int t=1;t<=3;t++){
for(int i=1;i<=n;i++){
cout<<a[t][i]<<" ";
}
cout<<endl;
}
cout<<k<<endl;
return 0;
}
by Loser_Syx @ 2023-02-07 20:12:47
@huangzhengnan8866 开大了点数组,dfs里面帮你加了个if,你可以看看
#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
#include <queue>
#include <cstdio>
using namespace std;
#define ll long long
//#pragma G++ optimize(2)
//#pragma G++ optimize(3)
void inp_io(){
std::ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
}
const ll N=100005;
int fx[20]={-1,0,1,0,-1,1,1,-1};
int fy[20]={0,1,0,-1,1,-1,1,-1};
bool vis[3][N];
int a[4][N];
int b[N];
ll n,m,len;
ll ans=0;
int k=0;
// insert code here...
void dfs(int step){
if(step==n+1){
k++;
if(k <= 3)
for(int i=1;i<=n;i++){
a[k][i]=b[i];
}
return;
}
for(int i=1;i<=n;i++){
if(vis[0][i]==0&&vis[1][step+i]==0&&vis[2][step-i+8]==0){
vis[0][i]=1;
vis[1][step+i]=1;
vis[2][step-i+8]=1;
b[step]=i;
dfs(step+1);
vis[0][i]=0;
vis[1][step+i]=0;
vis[2][step-i+8]=0;
}
}
}
//void inp(){
// cin>>n;
//}
//void work(){
// dfs(1);
// while(n--){
// int t;
// cin>>t;
// for(int i=1;i<=8;i++){
// cout<<a[t][i];
// }
// cout<<endl;
// }
//}
int main(){
//inp_io();
//inp();
//work();
cin>>n;
dfs(1);
for(int t=1;t<=3;t++){
for(int i=1;i<=n;i++){
cout<<a[t][i]<<" ";
}
cout<<endl;
}
cout<<k<<endl;
return 0;
}