题意:在n*m的方格里有t个棋子,问最多能放多少个炮且每一个炮不能互相攻击(炮吃炮)

炮吃炮:在同一行或同一列且中间有一颗棋子。

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <queue>
#include <math.h>
#define M 50
#define LL long long
using namespace std;
using namespace std;
int n,m,t,ans;
int ma[M][M];
bool bfs(int x,int y)//推断x,y能不能放
{
int xx=x-1;
int cnt=0;
while(xx>=0)
{ if(ma[xx][y]==1&&cnt==1) return false;
if(ma[xx][y]==1||ma[xx][y]) cnt++;
xx--;
}
xx=x+1;
cnt=0;
while(xx<n)
{ if(ma[xx][y]==1&&cnt==1) return false;
if(ma[xx][y]==1||ma[xx][y]) cnt++;
xx++;
}
int yy=y-1;
cnt=0;
while(yy>=0)
{ if(ma[x][yy]==1&&cnt==1) return false;
if(ma[x][yy]==1||ma[x][yy]) cnt++;
yy--;
}
yy=y+1;
cnt=0;
while(yy<m)
{ if(ma[x][yy]==1&&cnt==1) return false;
if(ma[x][yy]==1||ma[x][yy]) cnt++;
yy++;
}
return true;
}
void dfs(int x,int y,int tmp)
{
if(tmp>ans) ans=tmp;
for(int i=x;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(i==x&&j<y) continue;
if(ma[i][j]!=-1&&bfs(i,j))
{
ma[i][j]=1;
dfs(i,j+1,tmp+1);
ma[i][j]=0;
}
}
}
}
int main()
{
while(~scanf("%d%d%d",&n,&m,&t))
{
memset(ma,0,sizeof(ma));
int x,y;
while (t--)
{
scanf( "%d %d" ,&x,&y);
ma[x][y]=-1;
}
ans=0;
dfs(0,0,0);
printf("%d\n",ans);
}
}

HDU 4499 Cannon (暴力搜索)的更多相关文章

  1. hdu 4499 Cannon(暴力)

    题目链接:hdu 4499 Cannon 题目大意:给出一个n*m的棋盘,上面已经存在了k个棋子,给出棋子的位置,然后求能够在这种棋盘上放多少个炮,要求后放置上去的炮相互之间不能攻击. 解题思路:枚举 ...

  2. HDU 4499 Cannon (搜索)

    Cannon Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Subm ...

  3. HDU 4499.Cannon 搜索

    Cannon Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Subm ...

  4. HDU 4499 Cannon (暴力求解)

    题意:给定一个n*m个棋盘,放上一些棋子,问你最多能放几个炮(中国象棋中的炮). 析:其实很简单,因为棋盘才是5*5最大,那么直接暴力就行,可以看成一行,很水,时间很短,才62ms. 代码如下: #i ...

  5. hdu 4499 Cannon dfs

    Cannon Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4499 D ...

  6. hdu 4740 The Donkey of Gui Zhou(暴力搜索)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4740 [题意]: 森林里有一只驴和一只老虎,驴和老虎互相从来都没有见过,各自自己走过的地方不能走第二次 ...

  7. HDU 3131 One…Two…Five! (暴力搜索)

    题目链接:pid=3131">HDU 3131 One-Two-Five! (暴力搜索) 题意:给出一串数字,要求用加,减,乘,除(5/2=2)连接(计算无优先级:5+3*6=8*6= ...

  8. hdu 1427 速算24点 dfs暴力搜索

    速算24点 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem De ...

  9. ACM 暴力搜索题 题目整理

    UVa 129 Krypton Factor 注意输出格式,比较坑爹. 每次要进行处理去掉容易的串,统计困难串的个数. #include<iostream> #include<vec ...

随机推荐

  1. System.AppDomain类详解(一)

    AppDomain是CLR(Common Language Runtime:公共语言运行库),它可以加载Assembly.创建对象以及执行程序. AppDomain是CLR实现代码隔离的基本机制. 每 ...

  2. 2) 十分钟学会android--建立第一个APP,执行Android程序

    通过上一节课创建了一个Android的Hello World项目,项目默认包含一系列源文件,它让我们可以立即运行应用程序. 如何运行Android应用取决于两件事情:是否有一个Android设备和是否 ...

  3. Selenium示例集锦--常见元素识别方法、下拉框、文本域及富文本框、鼠标操作、一组元素定位、弹窗、多窗口处理、JS、frame、文件上传和下载

    元素定位及其他操作 0.常见的识别元素的方法是什么? driver.find_element_by_id() driver.find_element_by_name() driver.find_ele ...

  4. GPC:使用GPC计算intersection容易出现的问题

    在使用GPC计算多边形的交的时候,出现问题 //1.2. 另一种方法,判断新的多边形是否和老多边形相交     Poly cross = (PolyDefault) Clip.intersection ...

  5. 梦想Android版CAD控件2019.01.23更新

    下载地址:http://www.mxdraw.com/ndetail_10121.html?tdsourcetag=s_pcqq_aiomsg1. 增加异步读取CAD,DWG文件函数,MxFuncti ...

  6. nginx_rewrite规则介绍

    rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向.rewrite只能放在server{},location{},if{}中,并且只能 ...

  7. Java基础(七)--Exception异常处理

    发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...

  8. js 动态加载select触发事件

    动态加载select后,手动调用一下 subjectChange函数,模拟触发change事件 function hallidChange(value) { $.ajax({ type: " ...

  9. 第3章 从Flux到Redux

    第3章 从Flux到Redux 3.1 Flux 单向数据流,React是用来替换Jquery的,Flux是以替换Backbone.js.Ember.js等MVC框架为主的. actionTypes. ...

  10. 移动端响应式rem

    (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? ...