dfs,求调
查看原帖
dfs,求调
800937
魏蕴博楼主2023/10/14 21:32

爆零,求调

#include<bits/stdc++.h>
using namespace std;
int q[100],n,ans;
int b1[100],b2[100],b3[100];
void dfs(int x)
{
	if(x>n)
	ans++;
	    if(ans<=3)
	    {
	    	for(int i=1;i<=n;i++)
	    	{
	    		cout<<q[i]<<" ";
			}
			return ;
		}			
	for(int i=1;i<=n;i++)
	{
		if(b1[i]==0&&b2[x+i]==0&&b3[x-i+15]==0)
		{
		    q[x]=i;
		    b1[i]=1;b2[x+i]=1;b3[x-i+15]=1;
		    dfs(x+1);
		    b1[i]=0;b2[x+i]=0;b3[x-i+15]=0;
		}
	}
}
int main()
{
	//freopen("p1929.in","w",stdin);
	//freopen("p1929.out","r",stdout);
	cin>>n;
	dfs(1);
	cout<<ans;
	return 0;
}
2023/10/14 21:32
加载中...