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的更多相关文章

  1. 洛谷 P1219 八皇后【经典DFS,温习搜索】

    P1219 八皇后 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序 ...

  2. 洛谷 P1219八皇后

    把全部,在这251秒,赌上! ——<游戏人生zero> 题目:https://www.luogu.org/problem/P1219 八皇后是一道非常非常非常经典的深搜+回溯的题目. 这道 ...

  3. 洛谷P1219 八皇后【dfs】

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  4. 洛谷 p1219 八皇后

    刚参加完蓝桥杯 弱鸡错了好几道..回头一看确实不难 写起来还是挺慢的 于是开始了刷题的道路 蓝桥杯又名搜索杯 暴力杯...于是先从dfs刷起 八皇后是很经典的dfs问题 洛谷的这道题是这样的 上面的布 ...

  5. 【洛谷P1219 八皇后】

    参考思路见白书(一本通) 题目链接 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上 ...

  6. 洛谷 P1219 八皇后题解

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  7. 洛谷P1219 八皇后

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  8. 洛谷P1219 八皇后 我。。。。。。

    代码1    (学弟版) #include<bits/stdc++.h>using namespace std;int l[15];bool s[15];                  ...

  9. 洛谷P2105 K皇后

    To 洛谷.2105 K皇后 题目描述 小Z最近捡到了一个棋盘,他想在棋盘上摆放K个皇后.他想知道在他摆完这K个皇后之后,棋盘上还有多少了格子是不会被攻击到的. (Ps:一个皇后会攻击到这个皇后所在的 ...

随机推荐

  1. 使用nginx转发不了静态文件

    从django runserver的请求来看,都收不到静态文件请求, 查看firefox的web console请求,发现都是403 然后发现nginx不在当前用户组,并且当前用户的项目的读写权限是7 ...

  2. 图片异步载入之 Android-Universal-Image-Loader

    今天在做项目的时候用了之前写的图片载入类.尽管也能实现缓存什么的.可是在载入大图的时候非常慢非常慢.于是上网找解决方式,准备优化一下,无意中发现了Android-Universal-Image-Loa ...

  3. Andriod DiskLruCache的使用案例

    DiskLruCache是谷歌推荐的用来实现硬盘缓存的类,本案例将对DiskLruCache的基本用法做一个总结,包括:创建缓存.查找使用缓存.移除缓存等等. 实现效果图 创建DiskLruCache ...

  4. require.js结合项目的使用心得

    1.首先引入require.js 2.配置config.js文件 var $cdn_url=/'''/''/;----->指定文件一个共用的路径 require.config({ baseUrl ...

  5. struts.xml中为什么加上<constant name="struts.devMode" value="true" />就出错

    严重: Exception starting filter struts2 java.lang.NullPointerException at com.opensymphony.xwork2.util ...

  6. 实现多线程的方式Runnable

    package com.thread.runnable; /** * 实现多线程的方式有继承Thread类和实现Runnable接口两种方式 * 哪种方式更好呢?实现的方式由于继承的方式. * 原因: ...

  7. cocos2d-x触摸事件优先级

     CCTouchDispatcher是管理cocos2d-x中全部Touch事件派发的类, CCTouchDispatcher中包括了两个CCTouchHandler的列表, 分别存储Standa ...

  8. Django-权限信息中间件操作

    # 在当前app下新建一个middleware的文件夹,然后就可以尽情的写中间件了,只能是这个名字,切记~@!import re from django.shortcuts import redire ...

  9. Robotium结果的收集和失败重跑

    引用自 http://www.robotium.cn/archives/author/zered 测试用例: testsuite管理测试用例 测试结果的输出与收集? InstrumentationTe ...

  10. 白帽子讲web安全读后感

    又是厚厚的一本书,为了不弄虚做假,只得变更计划,这一次调整为读前三章,安全世界观,浏览器安全和xss.其它待用到时再专门深入学习. 吴翰清是本书作者,icon是一个刺字,圈内人称道哥.曾供职于阿里,后 ...