30分求调
查看原帖
30分求调
554576
yueluoxingchen楼主2024/7/9 12:02
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<stack>
#include<queue>
using namespace std;

const int N=15;
int res[N],a[N],b[N],c[N];
int n,cnt;

void print()
{
	cnt++;
	//cout<<cnt<<endl;
	if(cnt<=3) for(int i=1;i<=n;i++) cout<<res[i]<<" ";
	if(cnt<=3) cout<<endl;
}

void dfs(int ha)
{
	if(ha>n)
	{
		print();
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(!a[i] && !b[ha+i] && !c[ha-i+n])
		{
			a[i]=b[ha+i]=c[ha-i+n]=1;
			res[ha]=i;
			dfs(ha+1);
			a[i]=b[ha+i]=c[ha-i+n]=0;
		}
	}
}

int main()	
{
	cin>>n;
	dfs(1);
	cout<<cnt<<endl;
	return 0;
}
2024/7/9 12:02
加载中...