社区讨论
解的个数没问题,但是前三个输出总是错误,求助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 条回复,欢迎继续交流。
正在加载回复...