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

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

  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <string.h>
  5. #include <queue>
  6. #include <math.h>
  7. #define M 50
  8. #define LL long long
  9. using namespace std;
  10. using namespace std;
  11. int n,m,t,ans;
  12. int ma[M][M];
  13. bool bfs(int x,int y)//推断x,y能不能放
  14. {
  15. int xx=x-1;
  16. int cnt=0;
  17. while(xx>=0)
  18. {
  19.  
  20. if(ma[xx][y]==1&&cnt==1) return false;
  21. if(ma[xx][y]==1||ma[xx][y]) cnt++;
  22. xx--;
  23. }
  24. xx=x+1;
  25. cnt=0;
  26. while(xx<n)
  27. {
  28.  
  29. if(ma[xx][y]==1&&cnt==1) return false;
  30. if(ma[xx][y]==1||ma[xx][y]) cnt++;
  31. xx++;
  32. }
  33. int yy=y-1;
  34. cnt=0;
  35. while(yy>=0)
  36. {
  37.  
  38. if(ma[x][yy]==1&&cnt==1) return false;
  39. if(ma[x][yy]==1||ma[x][yy]) cnt++;
  40. yy--;
  41. }
  42. yy=y+1;
  43. cnt=0;
  44. while(yy<m)
  45. {
  46.  
  47. if(ma[x][yy]==1&&cnt==1) return false;
  48. if(ma[x][yy]==1||ma[x][yy]) cnt++;
  49. yy++;
  50. }
  51. return true;
  52. }
  53. void dfs(int x,int y,int tmp)
  54. {
  55. if(tmp>ans) ans=tmp;
  56. for(int i=x;i<n;i++)
  57. {
  58. for(int j=0;j<m;j++)
  59. {
  60. if(i==x&&j<y) continue;
  61. if(ma[i][j]!=-1&&bfs(i,j))
  62. {
  63. ma[i][j]=1;
  64. dfs(i,j+1,tmp+1);
  65. ma[i][j]=0;
  66. }
  67. }
  68. }
  69. }
  70. int main()
  71. {
  72. while(~scanf("%d%d%d",&n,&m,&t))
  73. {
  74. memset(ma,0,sizeof(ma));
  75. int x,y;
  76. while (t--)
  77. {
  78. scanf( "%d %d" ,&x,&y);
  79. ma[x][y]=-1;
  80. }
  81. ans=0;
  82. dfs(0,0,0);
  83. printf("%d\n",ans);
  84. }
  85. }

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. SqlServer知识点-操作xml

    一.开发环境 SQL2010 二.开发过程 1.声明一个xml类型变量 DECLARE @xmlInfo XML; SET @xmlInfo = '<CompanyGroup> <C ...

  2. 深度优先搜索DFS和广度优先搜索BFS简单解析

    转自:https://www.cnblogs.com/FZfangzheng/p/8529132.html 深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每 ...

  3. dede其他栏目页的logo没有完整显示怎么办?

    在首页完全没有问题,可是点击关于我们.联系我们.加入我们的时候logo图标是缺失的,这时候怎么办? 其实这个是css样式的问题,只要找到相对应页面的css,改一下他们的宽就可以了,如果高不够就自己调整 ...

  4. 左耳听风 ARTS Week 001

    要求:1.每周至少做一个 leetcode 的算法题 2.阅读并点评至少一篇英文技术文章 3.学习至少一个技术技巧 4.分享一篇有观点和思考的技术文章 1.每周至少做一个 leetcode 的算法题 ...

  5. POJ_1050_(dp)

    To the Max Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 48232   Accepted: 25534 Desc ...

  6. WindowsForms获取服务名称

    StringBuilder sb = new StringBuilder(); ServiceController[] services = ServiceController.GetServices ...

  7. Spring框架系列(五)--面向切面AOP

    背景: 当需要为多个不具有继承关系的对象引入一个公共行为,例如日志.权限验证.事务等功能时,如果使用OOP,需要为每个对象引入这些公共 行为.会产生大量重复代码,并且不利用维护.AOP就是为了解决这个 ...

  8. 【转载】jQuery.extend 函数详解

    转载自:http://www.cnblogs.com/RascallySnake/archive/2010/05/07/1729563.html jQuery.extend 函数详解 JQuery的e ...

  9. react-router 4.x 路由按需加载

    react-router 4 代码分割(按需加载) 官方文档  https://serverless-stack.com/chapters/code-splitting-in-create-react ...

  10. A3. JVM 类加载器

    [概述] 虚拟机设计团队把类加载阶段中的 “通过一个类的全限定名来获取描述此类的二进制字节流” 这个动作放到 Java 虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类.实现这个动作的代码 ...