洛谷 - 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:一个皇后会攻击到这个皇后所在的 ...
随机推荐
- PHP开发的一些趣事
配置运行环境studyPhp: http://www.phpstudy.net/phpstudy/PhpStudy20180211.zip PHP运行环境:5.4 首先做的是一个表单测试吧 <! ...
- 多线程网页爬虫 python 实现(二)
#!/usr/bin/env python #coding=utf-8 import threading import urllib import re import time cur=0 last= ...
- MAC Intellij IDEA 经常使用快捷键(本人亲自測试过)
MAC Intellij IDEA 经常使用快捷键 keymap 设置 MAC OS X 10.5+ alt+f7查找变量方法使用的地方 F3加入书签 Ctrl + O快捷覆写方法 Alt + F3 ...
- DesiredSize,RenderSize&& Width ,ActualWidth
做UI的时候刚入门,很多属性摸不着头脑,需要的功能和属性不能很快联系联想到,所以要慢慢积累UIElement 的DesiredSize 和 RenderSize UIElement 的DesiredS ...
- 第04章-VTK基础(2)
[译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934- ...
- asp.net连接Access数据库实现登陆功能
这里话就不多说了,直接演示代码. 连接access数据库首先需要配置web.config <appSettings> <add key="AccessConnString& ...
- hive增加Update、Delete支持
一.配置hive-site.xml二.建表三.操作四.总结 一.配置hive-site.xml CDH版本先进入Hive配置页 选择高级,找到hive-site.xml 的 Hive 客户端高级配置代 ...
- feed流,图片在左还是右的区别是
feed流设计:那些谋杀你时间APP | 人人都是产品经理 http://www.woshipm.com/pd/773523.html
- 时光轴一之listView实现时光轴效果
尼玛.非要搞什么时光轴,一想简单的不就是个listView吗,然后一步一步来就好了,哈哈别看那么好看事实上不要想多了. 时光轴timeline最大的作用就是把过去的事物系统化.完整化.精确化.时间轴可 ...
- ICMP协议 广播以查询局域网内的所有主机
看到了很多局域网内的主机扫描工具,在想怎么去实现这样一个工具.前几天看了Ping源码--ICMP协议的实例,ICMP可以用来探测网联网内的任一主机,ICMP和广播地址结合来扫描局域网内的所有主机不是很 ...