萌新求助!!!36pts!!!
查看原帖
萌新求助!!!36pts!!!
872386
Officer楼主2024/1/4 23:16
#include<bits/stdc++.h>
using namespace std;
int v1[10],v2[20],v3[20],n;
int ans[10];
int a[100][10];
int ind=0;
void dfs(int k)
{
	if(k==n+1)
	{
		++ind;
		for(int i=1;i<=n;i++)
		{
			a[ind][i]=ans[i];
		}
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(!v1[i]&&!v2[k+i]&&!v3[k-i+7])
		{
			v1[i]=1;
			v2[k+i]=1;
			v3[k-i+7]=1;
			ans[k]=i;
			dfs(k+1);
			v1[i]=0;
			v2[k+i]=0;
			v3[k-i+7]=0;
		}
	}
}
int main()
{
	cin>>n;
	dfs(1);
	for(int i=1;i<=3;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	cout<<ind<<endl;
    return 0;
}

2024/1/4 23:16
加载中...