题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3368

就是讲一种下棋的方法,很多人小时候也应该玩过,输入8*8的矩阵代表棋盘,*代表空位

D代表黑子,L代表白子,现在你手里只有一颗黑子,问你把这颗黑子放在哪里能够吃掉最多的白子

当一个方向上(斜方向也算)首尾都是黑子的时候它中间的白子当然就会被吃掉。

因为只有8*8的大小,所以可以枚举每一个棋子的八个方向统计能够吃多少个白子,类似于DFS

起初想的是枚举每个黑子,但是后来发现了漏掉了类似于D L L * L L D的情况 而且要改貌似有点麻烦

L L L

D   D    D

索性就换成了枚举每个*的位置 这样的好处是不会漏掉特殊情况,也比较简短

 #include<cstdio>
#include<cstring>
using namespace std;
int yi[][]={{,},{,},{,-},{,},{,-},{-,},{-,},{-,-}}; //列举八个方向
char map[][];
int x,y,sum,m,i,j,k;
void dfs(int s)
{
if (x<||x>||y<||y>||map[x][y]=='*') return ;
if (map[x][y]=='L') {s++; } //统计这一个方向白子的个数
if (map[x][y]=='D') {m+=s; return ;} //每个方向上的个数加在一起
x=x+yi[k][];
y=y+yi[k][];
dfs(s);
}
int main()
{
int n,cut=;
scanf("%d",&n);
while (n--)
{
cut++;
sum=;
for (i=;i<;i++)
scanf("%s",&map[i]);
for (i=;i<;i++)
for (j=;j<;j++)
{
m=;
if (map[i][j]=='*')
{
for (k=;k<;k++)
{
x=i+yi[k][];//枚举八个方向
y=j+yi[k][];
dfs();
}
}
if (m>sum) sum=m;
}
printf("Case %d: %d\n",cut,sum);
}
return ;
}

  

hdu 3368 曾经下过的棋的更多相关文章

  1. HDU 3368 Reversi

    http://acm.hdu.edu.cn/showproblem.php?pid=3368 题意:模拟黑白棋,下一步黑手最大可以转化多少个白旗 分析:暴力 原先的思路是找到D然后遍历其八个方向,直到 ...

  2. HDU 2553 N皇后问题【棋盘型DFS】

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  3. HDU 3368 Reversi (暴力,DFS)

    题意:给定一个8*8的棋盘,然后要懂黑白棋,现在是黑棋走了,问你放一个黑子,最多能翻白子多少个. 析:我是这么想的,反正才是8*8的棋盘,那么就暴吧,反正不会超时,把每一个格能暴力的都暴力,无非是上, ...

  4. HDU 3853 向下向右找出口问题-期望dp

    题意:初始状态在(1,1)的位置.目标是走到(n,n).每次仅仅能向下向右或者不移动.已知在每一个格子时这三种情况的概率,每移动一步消耗2的魔力,求走到终点的使用的魔力的期望. 分析:简单的期望dp, ...

  5. hdu 1292 &quot;下沙野骆驼&quot;ACM夏令营 (递推)

    "下沙野骆驼"ACM夏令营 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/ ...

  6. HDU ACM 1267 下沙的沙子有几粒?-&gt;DP

    题意:m个H和n个D,从左開始数H的累积个数总不比D的累计数少的排列有多少种.比如,3个H和1个D共同拥有3种符合要求的排列H D H H,H H D H,H H  H D. 分析:状态方程为,DP[ ...

  7. 『HTML5实现人工智能』小游戏《井字棋》发布,据说IQ上200才能赢【算法&代码讲解+资源打包下载】

    一,什么是TicTacToe(井字棋) 本游戏为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿童欢迎. ...

  8. hdu 4512 吉哥系列故事——完美队形I【LCIS经典应用】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4512 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  9. React的井字过三关(3)

    这是React井字棋项目的最后一篇笔记,记述AI实现. 一. 是开头都会说的原理 但凡懂一点围棋的人都知道"大场"这个概念,可以浅显地把它理解为布局时棋盘上各处的要点.棋谚&quo ...

随机推荐

  1. NFS 网络文件系统制作

    1. 构建根文件系统主要是建立相关的文件目录,以及各目录下相关的配置文件.管理工具等. 2. 首先创建文件目录. mkdir rootfs cd rootfs mkdir bin dev etc li ...

  2. java中excel导入\导出工具类

    1.导入工具 package com.linrain.jcs.test; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import ...

  3. js中的arguments对象

    在Javascript中没有函数重载,而arguments对象弥补了这点不足. js函数的参数是一个数组,在参数个数不固定的情况下,只需要给方法传递不同元素个数的数组即可.即使声明函数时没有形式参数, ...

  4. 启动Tomcat的小细节--MyEclipse

    1.先停掉Tomcat 2.然后再Redeploy项目 3.然后再启动Tomcat. 这样的好处是 代码彻底编译

  5. JavaScript中判断null、undefined与NaN的方法

    1.判断undefined: ? 1 2 3 4 var tmp = undefined; if (typeof(tmp) == "undefined"){ alert(" ...

  6. Mac mysql sql_model引起的问题

    问题: 我这里时应为timestamp引起的,服务器的数据使用的mysql5.本地使用的是mysql8,sql_model 不同导致数据不能够在数据库中添加. 解决: 在/etc/下查找my.cnf文 ...

  7. linux 切割文件的命令

    Head -1000 access.2016.log >> 10000_access.log

  8. PHP文件上传与下载

    一:上传文件与报错 $_FILES 超全局数组,包含了有关上传文件的所有信息! 而且,这个数组中只包含文件相关信息,其他数据依然在$_POST里面$_FILES是一个二维数组,每上传一个文件,都是数组 ...

  9. Angular之响应式表单 ( Reactive Forms )

    项目结构 一 首页 ( index.html ) <!doctype html> <html lang="en"> <head> <met ...

  10. label 和input/textarea居中对齐

    设置label和input/textarea的vertical-align: middle;即可实现垂直方向居中对齐.有时候可能会有偏差,设置input的margin-top使看上去居中对齐