社区讨论

解的个数没问题,但是前三个输出总是错误,求助QAQ

P1219[USACO1.5] 八皇后 Checker Challenge参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lo2t4laj
此快照首次捕获于
2023/10/23 19:21
2 年前
此快照最后确认于
2023/10/23 19:21
2 年前
查看原帖
C
#include<iostream>
using namespace std;
int n,ans=0;
bool col[15],x1[30],x2[30],y[15];
bool check(int i,int j)
{
	return !col[j]&&!x1[i+j]&&!x2[i-j+n];
}
void dfs(int r)
{
	if(r==n)
	{
		ans++;
		if(ans<=3)
		for(int i=0;i<n;i++)
		{
			cout<<y[i];
			if(i!=n-1)cout<<" ";
			else cout<<endl;
		}
		return;
	}
	for(int i=0;i<n;i++)
	{
		if(check(r,i)){
		y[r]=i+1;
		x1[r+i]=x2[r-i+n]=col[i]=true;
		dfs(r+1);
		x1[r+i]=x2[r-i+n]=col[i]=false;
		}
		
	}
}
int main()
{
	cin>>n;
	dfs(0);
	cout<<ans;
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...