https://www.luogu.org/problem/show?pid=1219

经典问题,搜索一遍过。

重点是判断皇后能否在map[x][y]放下的条件

  因为是dfs的时候过程中 x 是递增的  所以不需要 判断x轴了

  • 判断Y轴:开一个数组y[20]  若皇后在map[x][y]放下就 y[y]=1,在拿走皇后时就 y[y]=0

  • 判断y=x方向:开一个数组xy[40],若皇后在map[x][y]放下就pxy[y-x+n]=1,,在拿走皇后时就pxy[y-x+n]=0+n 是为了防止数组越界

  • 判断y=-x方向:开一个数组_xy[40],若皇后在map[x][y]放下就pxy[y+x]=1,,在拿走皇后时就pxy[y+x]=0
  • 说实话,就是利用线性函数 来判断,我还想的是 要通过染色来判断...我那样会T的吧

然后就是判断数量的时候  是到最后 判断 deep 》 n  直接加就行了  或者   if(dfs (deep+1)) sum++;

总之 DFS 和 BFS 还有差距呢  要加强自己的水平,就好了

#include<bits/stdc++.h>
using namespace std;
int n;
int sum ,ans;
int x[],y[],xy[],_xy[];//记录x,y,y=x y=-x上面的东西
int dp[]; int dfs(int deep)
{
if(deep > n)
{
sum++;
if(ans < )
{
ans ++ ;
for(int i=;i<=n;i++)
cout<<dp[i]<<" ";
cout<<endl;
}
return ;
}
for(int i=;i<=n;i++)
{
if(y[i] || xy[i-deep + n] || _xy[i+deep] )//判断y y=x y=-x方向
continue;
y[i] = xy[i-deep + n] =_xy[i+deep] = ;
dp[deep] = i;
dfs(deep + );
y[i] = xy[i-deep + n] =_xy[i+deep] = ;
}
} int main ()
{
cin >> n;
dfs();//从第一行开始准备
cout<< sum << endl;
}

luogu p1219 八皇后的更多相关文章

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

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

  2. 洛谷 P1219八皇后

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

  3. P1219 八皇后

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

  4. 洛谷 p1219 八皇后

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

  5. P1219 八皇后 含优化 1/5

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

  6. 【搜索】P1219 八皇后

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

  7. 洛谷P1219 八皇后

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

  8. 洛谷 - P1219 - 八皇后 - dfs

    https://www.luogu.org/problemnew/show/P1219 一开始朴素检查对角线就TLE了,给对角线编码之后压缩了13倍时间? 找了很久的bug居然是&&写 ...

  9. 【洛谷P1219 八皇后】

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

随机推荐

  1. 搭建FastDFS

    ---恢复内容开始--- FastDFS是用c语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用Fast ...

  2. Linux Netfilter注册钩子点

    注册钩子点首先要包含响应的头文件,因为这应该已经属于对kernel的编程了. #include <linux/module.h> #include <linux/kernel.h&g ...

  3. 三维凸包求其表面积(POJ3528)

    Ultimate Weapon Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 2074   Accepted: 989 D ...

  4. LCA在线算法(hdu2586)

    hdu2586 How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  5. postgresql----数据库表约束----PRIMARY KEY

    五.PRIMARY KEY ---- 主键约束 主键可以是单个字段,也可以是多个字段的组合.主键约束其实是UNIQUE和NOT NULL约束的组合,即主键必须是唯一,且各字段都是NOT NULL的. ...

  6. G1垃圾收集器入门-原创译文

    G1垃圾收集器入门-原创译文 原文地址 Getting Started with the G1 Garbage Collector 概览 目的 本文介绍了如何使用G1垃圾收集器以及如何与Hotspot ...

  7. 170712、springboot编程之集成shiro

    这篇文章我们来学习如何使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉及到这方面的需求.在Java领域一般有Spring Security ...

  8. Feature Toggle JUnit

    Feature Toggle,简单来说,就是一个开关,将未完成功能的代码屏蔽后发布到生产环境,从而避免多分支的情况.之所以有本文的产生,就是源于此情景.在引入Feature Toggle的同时,我们发 ...

  9. Go Configure Support hot reloading.

    Go Configure – Josh Betz https://josh.blog/2017/04/go-configure Go Configure APRIL 27, 2017 # DEVELO ...

  10. paramiko与ssh

    一.paramiko模块的安装 paramiko模块依赖PyCrypto模块,而PyCrypto需要GCC库编译,不过一般发行版的源里带有该模块.这里以centos6为例,直接借助以下命令可以直接完成 ...