社区讨论

样例过了,但只有12分,求调

灌水区参与者 6已保存回复 12

讨论操作

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

当前回复
12 条
当前快照
1 份
快照标识符
@lz6fd2fe
此快照首次捕获于
2024/07/29 11:23
2 年前
此快照最后确认于
2024/07/29 12:57
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int n,cnt=1,v;
int a[20],b[20],c[20],k[20],d[30];
void go(){
	if(v==3){
		cout<<cnt;
		exit(0);
	}
	for(int i=1;i<=n;i++)cout<<a[i]<<" ";
	cout<<endl;
}
void dfs(int j){
	for(int i=1;i<=n;i++){
		if(b[i]==0&&c[j]==0&&d[i+j]==0&&k[i-j+n]==0){
			b[i]=c[j]=d[i+j]=k[i-j+n]=1;
			a[j]=i;
			if(j==n){
				go();
				cnt++;
				v++;
			}
			else dfs(j+1);
			b[i]=c[j]=d[i+j]=k[i-j+n]=0;
		}
	}
}
int main(){
	cin>>n;
	dfs(1);
	return 0;
}
题目:https://www.luogu.com.cn/problem/P1219 闻灌多

回复

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

正在加载回复...