洛谷 - P1219 - 八皇后 - dfs
https://www.luogu.org/problemnew/show/P1219
一开始朴素检查对角线就TLE了,给对角线编码之后压缩了13倍时间?
找了很久的bug居然是&&写成了&&&,我喷了。
#include<bits/stdc++.h>
using namespace std;
#define ll long long bool cused[];
bool zxused[];
bool yxused[]; //bool g[14][14]; int ans[];
int atop=; int n;
int cnt=; inline int get_zx_id(int r,int c){
//int ans=r-c+n;
//printf("r=%d c=%d zid=%d\n",r,c,ans);
return r-c+n;
} inline int get_yx_id(int r,int c){
int rc=n+-c;
//int ans=r-rc+n;
//printf("r=%d c=%d yid=%d\n",r,c,ans);
return r-rc+n;
} void dfs(int r){
if(r>n){
cnt++;
if(cnt<=){
for(int i=;i<atop;i++){
printf("%d%c",ans[i]," \n"[i==atop-]);
}
}
} for(int j=;j<=n;j++){
if(cused[j]==&&zxused[get_zx_id(r,j)]==&&yxused[get_yx_id(r,j)]==){
cused[j]=;
zxused[get_zx_id(r,j)]=;
yxused[get_yx_id(r,j)]=;
//g[r][j]=1;
//ans[atop++]=r;
ans[atop++]=j;
dfs(r+);
atop-=;
//g[r][j]=0;
zxused[get_zx_id(r,j)]=;
yxused[get_yx_id(r,j)]=;
cused[j]=;
}
}
} int main(){
scanf("%d",&n); /*for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%2d ",get_zx_id(i,j));
}
printf("\n");
} printf("\n"); for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%2d ",get_yx_id(i,j));
}
printf("\n");
} printf("\n");*/ int r=;
for(int j=;j<=n;j++){
cused[j]=;
zxused[get_zx_id(r,j)]=;
yxused[get_yx_id(r,j)]=;
ans[atop++]=j;
dfs(r+);
atop-=;
yxused[get_yx_id(r,j)]=;
zxused[get_zx_id(r,j)]=;
cused[j]=;
}
printf("%d\n",cnt);
}
洛谷 - P1219 - 八皇后 - dfs的更多相关文章
- 洛谷 P1219 八皇后【经典DFS,温习搜索】
P1219 八皇后 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序 ...
- 洛谷 P1219八皇后
把全部,在这251秒,赌上! ——<游戏人生zero> 题目:https://www.luogu.org/problem/P1219 八皇后是一道非常非常非常经典的深搜+回溯的题目. 这道 ...
- 洛谷P1219 八皇后【dfs】
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
- 洛谷 p1219 八皇后
刚参加完蓝桥杯 弱鸡错了好几道..回头一看确实不难 写起来还是挺慢的 于是开始了刷题的道路 蓝桥杯又名搜索杯 暴力杯...于是先从dfs刷起 八皇后是很经典的dfs问题 洛谷的这道题是这样的 上面的布 ...
- 【洛谷P1219 八皇后】
参考思路见白书(一本通) 题目链接 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上 ...
- 洛谷 P1219 八皇后题解
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
- 洛谷P1219 八皇后
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
- 洛谷P1219 八皇后 我。。。。。。
代码1 (学弟版) #include<bits/stdc++.h>using namespace std;int l[15];bool s[15]; ...
- 洛谷P2105 K皇后
To 洛谷.2105 K皇后 题目描述 小Z最近捡到了一个棋盘,他想在棋盘上摆放K个皇后.他想知道在他摆完这K个皇后之后,棋盘上还有多少了格子是不会被攻击到的. (Ps:一个皇后会攻击到这个皇后所在的 ...
随机推荐
- hdoj-1856-More is better【并查集】
More is better Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 327680/102400 K (Java/Others) To ...
- 安卓开发懒鬼最爱之ButterKnife,依赖注入第三方是库,进一步加速开发速度
转载请注明出处:王亟亟的大牛之路 还在烦躁一大堆findById的控件操作而烦恼么? 平时,我们的那一系列findById是一个"浩大的project"样比例如以下 这是以前一个项 ...
- C语言使用以及其它语言经常出的错误
1. 计算优先级 i/*pi/(*p) //默认即用“()”花括号分隔即可 2.分号结束 ; ; if(i<j);{ //code } //分号结束必须看清楚 3.声明变量 ; ; //声明变量 ...
- 【转载】读懂IL代码就这么简单 (一)
一前言 感谢 @冰麟轻武 指出文章的错误之处,现已更正 对于IL代码没了解之前总感觉很神奇,初一看完全不知所云,只听高手们说,了解IL代码你能更加清楚的知道你的代码是如何运行相互调用的,此言一出不明觉 ...
- 令人赞叹的 MySQL
原文链接 译文链接 感谢 艾凌风 小伙伴校稿 令人赞叹的 MySQL 一个很棒的 MySQL 软件.库以及资源列表. 这个列表接受并鼓舞 pull requests,请看 CONTRIBUTING 文 ...
- find the longest of the shortest (hdu 1595 SPFA+枚举)
find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others) Memory Limit: 32768/32768 ...
- linux下DOS工具
1.Hping3/Nping TCP/IP数据包生成工具,用于压力测试,安全审计 2.使用hping进行DOS攻击 命令:hping3 -c 10000 -d 120 -S -w 64 -p 80 - ...
- [Pyhton]weakref 弱引用
文档中的解释: https://docs.python.org/2/library/weakref.html wiki 中的解释: 在计算机程序设计中,弱引用.与强引用相对.是指不能确保其引用的对象不 ...
- Hadoop每日一讨论整理版
这是我在几个QQ群发起的Hadoop每日一讨论小活动,每天中午2点左右发出一个关于Hadoop的知识片段,在此做一个整理. [每日一讨论]之计算框架(2013-5-21) 就计算框架而言,Hadoop ...
- Finally语句块的运行
一.finally语句块是否一定运行? Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被运行?非常多人都说不是.当然他们的回答是正确的,经过试验. ...