洛谷 - 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:一个皇后会攻击到这个皇后所在的 ...
随机推荐
- 使用nginx转发不了静态文件
从django runserver的请求来看,都收不到静态文件请求, 查看firefox的web console请求,发现都是403 然后发现nginx不在当前用户组,并且当前用户的项目的读写权限是7 ...
- 图片异步载入之 Android-Universal-Image-Loader
今天在做项目的时候用了之前写的图片载入类.尽管也能实现缓存什么的.可是在载入大图的时候非常慢非常慢.于是上网找解决方式,准备优化一下,无意中发现了Android-Universal-Image-Loa ...
- Andriod DiskLruCache的使用案例
DiskLruCache是谷歌推荐的用来实现硬盘缓存的类,本案例将对DiskLruCache的基本用法做一个总结,包括:创建缓存.查找使用缓存.移除缓存等等. 实现效果图 创建DiskLruCache ...
- require.js结合项目的使用心得
1.首先引入require.js 2.配置config.js文件 var $cdn_url=/'''/''/;----->指定文件一个共用的路径 require.config({ baseUrl ...
- struts.xml中为什么加上<constant name="struts.devMode" value="true" />就出错
严重: Exception starting filter struts2 java.lang.NullPointerException at com.opensymphony.xwork2.util ...
- 实现多线程的方式Runnable
package com.thread.runnable; /** * 实现多线程的方式有继承Thread类和实现Runnable接口两种方式 * 哪种方式更好呢?实现的方式由于继承的方式. * 原因: ...
- cocos2d-x触摸事件优先级
CCTouchDispatcher是管理cocos2d-x中全部Touch事件派发的类, CCTouchDispatcher中包括了两个CCTouchHandler的列表, 分别存储Standa ...
- Django-权限信息中间件操作
# 在当前app下新建一个middleware的文件夹,然后就可以尽情的写中间件了,只能是这个名字,切记~@!import re from django.shortcuts import redire ...
- Robotium结果的收集和失败重跑
引用自 http://www.robotium.cn/archives/author/zered 测试用例: testsuite管理测试用例 测试结果的输出与收集? InstrumentationTe ...
- 白帽子讲web安全读后感
又是厚厚的一本书,为了不弄虚做假,只得变更计划,这一次调整为读前三章,安全世界观,浏览器安全和xss.其它待用到时再专门深入学习. 吴翰清是本书作者,icon是一个刺字,圈内人称道哥.曾供职于阿里,后 ...