好久没学DFS,昨天既然连八皇后都不会了(……
12分 AC on #1……
求条
#include<bits/stdc++.h>
using namespace std;
int cnt;
bool v[100]={false},lx[100]={false},rx[100]={false};
int a[100],b[100],c[100];
void dfs(int x,int n){
if(x==n){
cnt++;return;
}
for(int i=1;i<=n;i++){
if(v[i]||lx[i-x+n]||rx[x+i])continue;
v[i]=1;
lx[i-x+n]=1;
rx[x+i]=1;
if(cnt==1)b[x]=i;
if(cnt==2)c[x]=i;
if(cnt==0)a[x]=i;
dfs(x+1,n);
v[i]=0;
lx[i-x+n]=0;
rx[x+i]=0;
}
}
int main(){
int as;cin>>as;
dfs(0,as);
for(int i=0;i<as;i++)cout<<a[i]<<' ';
cout<<'\n';
for(int i=0;i<as;i++)cout<<b[i]<<' ';
cout<<'\n';
for(int i=0;i<as;i++)cout<<c[i]<<' ';
cout<<'\n';
cout<<cnt;
}
好久没学了,写的比较烂,勿喷