样例都过不去,求助
查看原帖
样例都过不去,求助
262482
_koala_楼主2021/10/22 13:54
#include<bits/stdc++.h>
using namespace std;
int ans,j,n,a[15],b[15],c[30],d[30];//a记录 / b列/ c左对角+15 差 / d右对角 和 
void dfs(int x)
{
	int i;
	if(x==n) 
	{
		ans++;
		if(ans<=3) 
		for(i=1;i<=n;i++) cout<<a[i]<<" ";
		cout<<endl;
		return;
	}
	//else //
	for(i=1;i<=n;i++)
	{
		if(b[i]==0&&c[x-i+15]==0&&d[x+i]==0)
		{
			a[x]=i;
			b[i]=1;
			c[x-i+15]==1;
			d[x+i]==1;
			dfs(x+1);
			b[i]=0;
			c[x-i+15]==0;
			d[x+i]==0;	
		 } 
		
	}
}
int main()
{
	cin>>n;
	dfs(0);
	cout<<ans;
	return 0;
}
2021/10/22 13:54
加载中...