题意:

      给你一个棋盘,最大是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. SQLSERVER走起微信公众帐号已经开通搜狗微信搜索

    SQLSERVER走起微信公众帐号已经开通搜狗微信搜索 请打开下面链接 http://weixin.sogou.com/gzh?openid=oIWsFt-hiIb_oYqQHaBMoNwRB2wM ...

  2. solr_架构案例【京东站内搜索】(附程序源代码)

    注意事项:首先要保证部署solr服务的Tomcat容器和检索solr服务中数据的Tomcat容器,它们的端口号不能发生冲突,否则web程序是不可能运行起来的. 一:solr服务的端口号.我这里的sol ...

  3. SQLServer地址搜索性能优化例子

    这是一个很久以前的例子,现在在整理资料时无意发现,就拿出来再改写分享. 1.需求 1.1 基本需求: 根据输入的地址关键字,搜索出完整的地址路径,耗时要控制在几十毫秒内. 1.2 数据库地址表结构和数 ...

  4. HTML5轻松实现搜索框提示文字点击消失---及placeholder颜色的设置

    在做搜索框的时候无意间发现html5的input里有个placeholder属性能轻松实现提示文字点击消失功能,之前还傻傻的在用js来实现类似功能... 示例 <form action=&quo ...

  5. bzoj1079--记忆化搜索

    题目大意:有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块.所有油漆刚好足够涂满所有木块,即c1+c2+...+ck=n.相邻两个木块涂相同色显得 ...

  6. bzoj3208--记忆化搜索

    题目大意: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区的人员开发一个滑雪项目.    我们可以把风景区看作一个n*n的地图,每个点有它的初始高度,滑雪只能从高处往低处滑[严格大于] ...

  7. Android中通过ActionBar为标题栏添加搜索以及分享视窗

    在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果.Action ...

  8. 一步步开发自己的博客 .NET版(5、Lucenne.Net 和 必应站内搜索)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  9. Go语言实战 - 我需要站内搜索

    山坡网的用户抱怨"为什么搜索'二鬼子李富贵'找不到'二鬼子汉奸李富贵'?我用百度搜都能找到." 当时我就滴汗了,用户说的有道理,应该要能搜索到. 之前的方案很简单,用户输入的字串会 ...

随机推荐

  1. brew安装MySQL V5.7

    目录 安装 设置密码 启动 安装 brew install mysql@5.7 // 安装 brew link --force mysql@5.7 // 链接 brew services start ...

  2. Docker搭建HAproxy+tomcat 实现高可用

    构建业务镜像1创建tomcat-app1和tomcat-app2两个目录,代表不同的两个基于tomcat的业务.准备tomcat的配置文件[root@localhost ~]#mkdir -p /da ...

  3. 为什么要从 Linux 迁移到 BSD 4

    为什么要从 Linux 迁移到 BSD 4 许可证问题 Linux GPL 许可证对开发者的要求比较严格,它是一种开源的反模式,因为它强制发布所有修改过的源代码,并且阻止其他开源项目的集成,例如 GP ...

  4. 【odoo14】第三章、创建插件

    现在我们已经有了开发环境并了解了如何管理实例及数据库,现在让我们来学习下如何创建插件模块. 本章内容如下: 创建和安装模块 完成manifest文件 组织模块文件结构 添加模型 添加菜单及视图 添加访 ...

  5. PTA 二叉树的三种遍历(先序、中序和后序)

    6-5 二叉树的三种遍历(先序.中序和后序) (6 分)   本题要求实现给定的二叉树的三种遍历. 函数接口定义: void Preorder(BiTree T); void Inorder(BiTr ...

  6. javaIO中的序列化和反序列化

    javaIO中的序列化和反序列化 1.什么是序列化?它是来解决什么问题的 1.我们创建的对象,一般情况下在内存中,程序关闭,或者因为没有地址指向而导致垃圾回收 2.这样,我们的对象就会丢失 3.那么我 ...

  7. 开源项目月刊《HelloGitHub》第 60 期

    兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...

  8. java例题_08 输入特定数字求和(n个a位数递增求和问题)

    1 /*8 [程序 8 输入数字求和] 2 题目:求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字.例如 2+22+222+2222+22222(此时共有 5 个数相加), ...

  9. Spring笔记(三)

    Spring AOP 一.AOP(概念) 1. 什么是AOP 面向切面编程(方面),利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间的耦合度降低,提高程序的可重用性,同时提高了 ...

  10. HTML总结篇

    一.HTML基本结构标签 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...