社区讨论

为啥不开O2会WA啊 求解答

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

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@logkb7nh
此快照首次捕获于
2023/11/02 10:23
2 年前
此快照最后确认于
2023/11/02 10:23
2 年前
查看原帖
一开始36分我还以为代码问题 下载数据后发现一模一样 开了O2后莫名其妙的就过了 代码如下
CPP
#include<bits/stdc++.h>

using namespace std;

int h[15],l[15],x1[1145],x2[1145],ans=0,u,sbfuck=1;

void print(){
	for(int i=0;i<u;i++){
		cout<<h[i]+1<<" ";
	}
	cout<<endl;
}

void dfs(int n){
	if(n == u){
		if(sbfuck<=3){
			print();
			sbfuck++;
		}
		ans++;
		return;
	}
	else{
		for(int i=0;i<u;i++){
			if(l[i]!=1 and x1[i+n-u]!=1 and x2[n-i+u]!=1){
				h[n] = i;
				l[i] = 1;
				x1[i+n-u]=1;
				x2[n-i+u]=1;
				dfs(n+1);
				l[i] = 0;
				x1[i+n-u]=0;
				x2[n-i+u]=0;
			}
		}
	}
}

int main(){
	memset(h,0,sizeof(h));
	memset(l,0,sizeof(l));
	memset(x1,0,sizeof(x1));
	memset(x2,0,sizeof(x2));
	cin>>u;
	dfs(0);
	cout<<ans;
	return 0;
}
求解答 谢谢啦

回复

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

正在加载回复...