题意:在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. 关于java日期输出格式

    String.format("%tY%tm", new Date(), new Date()): //201905 String.format("%tY-%tm" ...

  2. log4j2异步日志解读(二)AsyncLogger

    前文已经讲了log4j2的AsyncAppender的实现[log4j2异步日志解读(一)AsyncAppender],今天我们看看AsyncLogger的实现. 看了这个图,应该很清楚AsyncLo ...

  3. 专题八:P2P编程

    引言: 前面的介绍专题中有朋友向我留言说介绍下关于P2P相关的内容的,首先本人对于C#网络编程也不是什么大牛,因为能力的关系,也只能把自己的一些学习过程和自己的一些学习过程中的理解和大家分享下的,下面 ...

  4. 鼠标拖拽移动Java界面组件

    默认的,Frame或者JFrame自身已经实现了鼠标拖拽标题栏移动窗口的功能. 只是,当你不满意java的JFrame样式,隐藏了标题栏和边框,又或者干脆直接使用JWindow,那你又该怎么实现鼠标拖 ...

  5. Mybatis学习总结四(关联查询)

    一.一对一查询 实例:查询所有订单信息,关联查询下单用户信息. Method1:使用resultType,定义订单信息po类,此po类中包括了订单信息和用户信息. public class Order ...

  6. 01网页<head></head>常用标记及属性

    网页<head></head>常用标记及属性 <!DOCTYPE html> <html> <head> <!--网页标题--> ...

  7. 在做导入一个excel文件的时候,数据有空值的时候

    StringUtil.isNotEmpty(i.getFname()),用这个方法可以解决 java string 去除前后两端的空格和空字符使用.trim()

  8. Python之实例属性和类属性

    参考原文 廖雪峰Python 实例属性和类属性 在前面已经说过由于Python是动态语言,可以根据类的实例绑定任何的属性. 给实例绑定属性的方法是通过实例变量,或者self变量绑定的: class S ...

  9. win10 javac无效

    win10配置环境变量时,要写绝对路径,不再需要写JAVA_HOME和classpaht,直接在pass上添加全路径就可以了.

  10. 诊断:ORA-38760: This database instance failed to turn on flashback database

    $ oerr ora 38760 38760, 00000, "This database instance failed to turn on flashback database&quo ...