听灌佬多,八皇后求助
  • 板块灌水区
  • 楼主Minecraft_BE
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/9/15 10:50
  • 上次更新2024/9/15 14:04:42
查看原帖
听灌佬多,八皇后求助
1373638
Minecraft_BE楼主2024/9/15 10:50

好久没学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;
}

好久没学了,写的比较烂,勿喷

2024/9/15 10:50
加载中...