题意:
      给你一个棋盘,最大是5*5的,问你最多可以放多少个炮,炮和炮之间不可以相互攻击,这块只的是只能走一步,不存在两个炮中间三个棋子的情况..

思路:

   刚开始想的是把所有的空位置都放上炮,然后最大点权独立集,结果没有办法把这个图弄成二分图,没招了,直接搜索吧,把每一个点分成两种情况,如果之前就有棋子,那么无话说直接下进入下一层,如果没有棋子,我们有两种选择,放炮和不放炮,先把不放炮写上,然后判断下是否可以放,我的想法是当前的位置只会影响当前位置的这一行和这一列,直接判断吧当前位置放上炮后的这行和这列是否满足条件,判断方法是枚举任意三个连续(不一定相邻)的数组,看第一个和第二个是否都是炮,至于怎么枚举画下就知道了,其实可以优化的,我们是从左往右,从上往下的,所以可以直接判断上和左就行了,自己懒得优化了,5*5不大怎么写都行..



#include<stdio.h>
#include<string.h>

int num[6][6];
int mark[6][6];
int xx ,yy ,ans;bool OK(int xxx ,int yyy)
{int mk = 0;int s ,s1 ,s2 ,s3;for(int iii = 0 ;iii < 3 ;iii ++){s = 0;for(int ii = iii ;ii < yy ;ii ++){if(!num[xxx][ii]) continue;s++;if(s == 1) s1 = num[xxx][ii];if(s == 2) s2 = num[xxx][ii];if(s == 3) s3 = num[xxx][ii];if(s == 3) break;}if(s == 3 && s1== 2 && s3 == 2){mk = 1;break;}}if(!mk)for(int iii = 0 ;iii < 3 ;iii ++){s = 0;for(int ii = iii ;ii < xx ;ii ++){if(!num[ii][yyy]) continue;s++;if(s == 1) s1 = num[ii][yyy];if(s == 2) s2 = num[ii][yyy];if(s == 3) s3 = num[ii][yyy];if(s == 3) break;}if(s == 3 && s1== 2 && s3 == 2){mk = 1;break;}}return mk == 0;
}void DFS(int sum ,int nowx ,int nowy)
{if(ans < sum) ans = sum;int x = nowx ,y = nowy + 1;if(y == yy){x++ ,y = 0;}if(mark[x][y] || x == xx) return;  if(num[x][y]) {  mark[x][y] = 1;DFS(sum ,x ,y);mark[x][y] = 0;}else{mark[x][y] = 1;DFS(sum ,x ,y);mark[x][y] = 0;num[x][y] = 2;if(OK(x ,y)){mark[x][y] = 1;DFS(sum + 1 ,x ,y);mark[x][y] = 0;      } num[x][y] =  0;}return ;
}int main ()
{int i ,q;int x ,y;while(~scanf("%d %d %d" ,&xx ,&yy ,&q)){memset(num ,0 ,sizeof(num));for(i = 1 ;i <= q ;i ++){scanf("%d %d" ,&x ,&y);num[x][y] = 1;}ans = 0;memset(mark ,0 ,sizeof(mark));DFS(0 ,0 ,-1);printf("%d\n" ,ans);    }return 0;
}

hdu4499 搜索相关推荐

  1. VS Code 配置调试参数、launch.json 配置文件属性、task.json 变量替换、自动保存并格式化、空格和制表符、函数调用关系、文件搜索和全局搜索、

    1. 生成配置参数 对于大多数的调试都需要在当前项目目录下创建一个 lanch.json 文件,位置是在当前项目目录下生成一个 .vscode 的隐藏文件夹,在里面放置一些配置内容,比如:settin ...

  2. 浅显易懂 Makefile 入门 (03)— 目标文件搜索(VPATH 和 vpath 的区别和使用)、隐含规则

    1. 目标文件搜索(VPATH和vpath) 如果需要的文件是存在于不同的路径下(即源文件与 Makefile 文件不在同一个路径下),在编译的时候就用到了 Makefile 中为我们提供的目录搜索文 ...

  3. Windows10自带搜索增强设置

    操作系统:Windows10 前言:Windows自带的搜索速度非常慢,因此有人借助Everything等索引软件进行搜索,能够显著提升搜索速度.但是Windows自带的搜索在进行一些设置以后也能达到 ...

  4. listary 指定目录搜索_everything

    20211009 https://zhuanlan.zhihu.com/p/225414423 listary详细使用 20210710 everything搜索文件,结果出现相同的2个重复情况,路径 ...

  5. LeetCode简单题之二叉搜索树中的搜索

    题目 给定二叉搜索树(BST)的根节点 root 和一个整数值 val. 你需要在 BST 中找到节点值等于 val 的节点. 返回以该节点为根的子树. 如果节点不存在,则返回 null . 示例 1 ...

  6. Hexo集成Algolia实现搜索功能

    2年前搭建的hexo博客好久没有维护了,一看 hexo 以及先前使用 butterfly 主题已经更新好几个版本了,看介绍在速度性能上有了很大的提高,于是打算给 hexo 升个级,整理整理翻翻新.通过 ...

  7. 目标识别的选择性搜索

    目标识别的选择性搜索 Selective Search for Object Recognition 论文地址: https://ivi.fnwi.uva.nl/isis/publications/b ...

  8. 2021年大数据ELK(四):Lucene的美文搜索案例

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 美文搜索案例 一.需求 二.准备工作 1.创建IDEA项目 2. ...

  9. [C] 深度优先搜索解决连通块/染色问题——求岛的个数

    本文介绍用DFS解决连通块个数问题 有关dfs的介绍见另外一篇:不撞南墙不回头--深度优先搜索 例题 宝岛探险 题目描述 一个小岛由一个主岛和一些复附属岛屿组成,该岛使用一个二维矩阵表示,其中数字表示 ...

最新文章

  1. 第五期直播《聊聊目标检测和秋招那些事》精彩回顾
  2. 计算机生物学杂志,基因组学与应用生物学杂志
  3. C# 开发和使用中的33个技巧
  4. Tech·Ed 2007大会课程内容
  5. 转盘脚本编辑器学习1
  6. php根据键值去除数组中的某个元素_php数组删除元素 删除指定键值元素
  7. 【数据结构】二分查找代码模板
  8. 深入理解socket中的recv函数和send函数
  9. 视频转成gif动图怎么操作?仅需三步在线完成视频转gif
  10. css实现循环扩散光圈的效果
  11. win10桌面计算机被删了,Win10回收站不小心清空了怎么办?如何恢复Win10被删除文件的方法...
  12. Cocos独立游戏精品|高自由度地牢探险《贪婪洞窟​》
  13. 利用Photoshop进行快速切图
  14. 关于jdk11没有jre文件夹
  15. MATLAB颜色的植物虫害检测识别
  16. 【随笔】IT圈的头衔泡沫
  17. 正则表达式匹配仅包含某些字符或者包含某些字符
  18. 中国被爱可以在线WAP站点首页源代码
  19. 【自然语言处理】英文开源工具汇总()
  20. Hi3518的uboot中播放音频

热门文章

  1. 图形验证码最佳攻略2
  2. machine learn in python 第二章2.1.1
  3. 皮尔·卡丹的管理思想精髓:从小做到大
  4. Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之06.JDBC PreparedStatement
  5. 3dContactPointAnnotationTool开发日志(二二)
  6. linux基础(一)
  7. 创建 OVS 外部网络 ext_net - 每天5分钟玩转 OpenStack(144)
  8. Perl中的单行凝视和多行凝视
  9. php对象编程遇到的BUG!
  10. Azure Bill