题目链接: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. VC++ 获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法

    1.使用CTime类(获取系统当前时间,精确到秒) CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime();//获取系统日期 str=tm ...

  2. mysql 数据库必备命令操作,入门练习一下

    mysql 数据库必备命令操作 show databases: 查看所有的数据库: create database jfedu: 创建名为jfedu数据库: use nihao: 进入jfedu数据库 ...

  3. asp.net中处理程序调用HttpContext.Current.Session获取值出错

    asp.net中处理程序调用System.Web.HttpContext.Current.Session获取Session时提示错误:未将对象引用设置到对象的实例. 解决办法:在处理程序文件类中实现I ...

  4. opencv矩阵操作

    1.初始化矩阵: 方式一.逐点赋值式: CvMat* mat = cvCreateMat( 2, 2, CV_64FC1 ); cvZero( mat ); cvmSet( mat, 0, 0, 1 ...

  5. asp.net MVC 导出excle(转)

    转载网址: http://www.cnblogs.com/imr3/articles/2856109.html 还是放到自己这边比较保险. ExportExcel Code public FileRe ...

  6. java 反编译工具

    (1)点击进入>>   https://jingyan.baidu.com/article/3f16e003c857082590c1036f.html (备注:如果以上链接的资源不能下载, ...

  7. 解决ie浏览器下载apk或ipa变为zip

    Tomcat/conf/web.xml <mime-mapping> <extension>apk</extension> <mime-type>app ...

  8. Spring之jdbcTemplate实现orm

    public List<AppUser> getAppUser(AppUser appUser) { String sql = "select * from appuser a ...

  9. leetcode 树类型题

    树的测试框架: // leetcodeTree.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream& ...

  10. 200. Number of Islands (Graph)

    Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surro ...