怎么会这样,求大佬调
查看原帖
怎么会这样,求大佬调
550898
xjx199楼主2024/1/16 09:20
#include<bits/stdc++.h>
using namespace std;
int sum,n;
int a[1000001],b[1000001],c[100001],d[1000001];
void print()
{
	sum++;
	for(int i=1;i<=n;i++)
	{
		cout<<a[i];
		if(i==n) cout<<endl;
		else cout<<" ";
	}
}
int dfs(int k)
{
	for(int i=1;i<=n;i++)
	{
		if(b[i]==0 && d[k-i+15]==0 && c[k+i]==0)
		{
			a[k]=i;
			b[i]=1;
			c[i+k]=1;
			d[k-i+15]=1;
			if(i==n)
			{
				print();
			}
			else dfs(k+1);
			b[i]=0;
			c[k+i]=0;
			d[k-i+15]=0;
		}
	}
}
int main()
{
	int n;
	cin>>n;
	dfs(1);
	cout<<sum<<endl;
	return 0;
}
2024/1/16 09:20
加载中...