题意看不懂的直接看百度百科对黑白棋的解释。。。

做法:分情况讨论,一共8个方向。

 /*
搜索
*/
#include<stdio.h>
#include<string.h>
const int maxn = ;
char mat[ maxn ][ maxn ];
const int dx[]={-,,-,};
const int dy[]={,-,-,}; int max( int a,int b ){
return a>b?a:b;
} bool in( int x,int y ){
if( x>=&&x<=&&y>=&&y<= ) return true;
else return false;
} int solve( int x,int y ){
int ans = ;
int pos; pos = -;
for( int i=y+;i<=;i++ ){
if( mat[x][i]=='D' ){
pos = i;
break;
}
}
if( pos!=- ){
for( int i=y+;i<=pos;i++ ){
if( mat[x][i]=='*' ){
pos = -;
break;
}
}
}
if( pos!=- ){
for( int i=y+;i<=pos;i++ ){
if( mat[x][i]=='L' )
ans++;
}
}
//right
pos = -;
for( int i=y-;i>=;i-- ){
if( mat[x][i]=='D' ){
pos = i;
break;
}
}
if( pos!=- ){
for( int i=y-;i>=pos;i-- ){
if( mat[x][i]=='*' ){
pos = -;
break;
}
}
}
if( pos!=- ){
for( int i=y-;i>=pos;i-- ){
if( mat[x][i]=='L' )
ans++;
}
}
//left
pos = -;
for( int i=x+;i<=;i++ ){
if( mat[i][y]=='D' ){
pos = i;
break;
}
}
if( pos!=- ){
for( int i=x+;i<=pos;i++ ){
if( mat[i][y]=='*' ){
pos = -;
break;
}
}
}
if( pos!=- ){
for( int i=x+;i<=pos;i++ ){
if( mat[i][y]=='L' )
ans++;
}
}
//down
pos = -;
for( int i=x-;i>=;i-- ){
if( mat[i][y]=='D' ){
pos = i;
break;
}
}
if( pos!=- ){
for( int i=x-;i>=pos;i-- ){
if( mat[i][y]=='*' ){
pos = -;
break;
}
}
}
if( pos!=- ){
for( int i=x-;i>=pos;i-- ){
if( mat[i][y]=='L' )
ans++;
}
}
//up
int posx,posy;
int K;
posx = -;
for( int k=;k<=;k++ ){
int tx = x+k*dx[];
int ty = y+k*dy[];
if( in(tx,ty)==false ) break;
if( mat[tx][ty]=='D' ){
posx = tx;
posy = ty;
K = k;
break;
}
}
if( posx!=- ){
for( int k=;k<=K;k++ ){
int tx = x+k*dx[];
int ty = y+k*dy[];
if( in(tx,ty)==false ) break;
if( mat[tx][ty]=='*' ){
posx = -;
break;
}
}
}
if( posx!=- ){
for( int k=;k<=K;k++ ){
int tx = x+k*dx[];
int ty = y+k*dy[];
if( in(tx,ty)==false ) break;
if( mat[tx][ty]=='L' )
ans++;
}
}
//right && up
posx = -;
for( int k=;k<=;k++ ){
int tx = x+k*dx[];
int ty = y+k*dy[];
if( in(tx,ty)==false ) break;
if( mat[tx][ty]=='D' ){
posx = tx;
posy = ty;
K = k;
break;
}
}
if( posx!=- ){
for( int k=;k<=K;k++ ){
int tx = x+k*dx[];
int ty = y+k*dy[];
if( in(tx,ty)==false ) break;
if( mat[tx][ty]=='*' ){
posx = -;
break;
}
}
}
if( posx!=- ){
for( int k=;k<=K;k++ ){
int tx = x+k*dx[];
int ty = y+k*dy[];
if( in(tx,ty)==false ) break;
if( mat[tx][ty]=='L' )
ans++;
}
}
//left && down
posx = -;
for( int k=;k<=;k++ ){
int tx = x+k*dx[];
int ty = y+k*dy[];
if( in(tx,ty)==false ) break;
if( mat[tx][ty]=='D' ){
posx = tx;
posy = ty;
K = k;
break;
}
}
if( posx!=- ){
for( int k=;k<=K;k++ ){
int tx = x+k*dx[];
int ty = y+k*dy[];
if( in(tx,ty)==false ) break;
if( mat[tx][ty]=='*' ){
posx = -;
break;
}
}
}
if( posx!=- ){
for( int k=;k<=K;k++ ){
int tx = x+k*dx[];
int ty = y+k*dy[];
if( in(tx,ty)==false ) break;
if( mat[tx][ty]=='L' )
ans++;
}
}
//left &&up
posx = -;
for( int k=;k<=;k++ ){
int tx = x+k*dx[];
int ty = y+k*dy[];
if( in(tx,ty)==false ) break;
if( mat[tx][ty]=='D' ){
posx = tx;
posy = ty;
K = k;
break;
}
}
if( posx!=- ){
for( int k=;k<=K;k++ ){
int tx = x+k*dx[];
int ty = y+k*dy[];
if( in(tx,ty)==false ) break;
if( mat[tx][ty]=='*' ){
posx = -;
break;
}
}
}
if( posx!=- ){
for( int k=;k<=K;k++ ){
int tx = x+k*dx[];
int ty = y+k*dy[];
if( in(tx,ty)==false ) break;
if( mat[tx][ty]=='L' )
ans++;
}
}
//right && down return ans;
} int main(){
int T;
scanf("%d",&T);
int ca = ;
while( T-- ){
for( int i=;i<=;i++ ){
scanf("%s",mat[i]+);
}
//memset( vis,false,sizeof( vis ) );
int ans = ;
for( int i=;i<=;i++ ){
for( int j=;j<=;j++ ){
if( mat[i][j]=='*' ){
ans = max( ans,solve( i,j ) );
//if( ans>0 ) printf("attention:%d %d \n",i,j);
}
}
}
printf("Case %d: %d\n",ca++,ans);
}
return ;
}

HDU3368+枚举的更多相关文章

  1. Swift enum(枚举)使用范例

    //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...

  2. 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)

    建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...

  3. Objective-C枚举的几种定义方式与使用

    假设我们需要表示网络连接状态,可以用下列枚举表示: enum CSConnectionState { CSConnectionStateDisconnected, CSConnectionStateC ...

  4. Help Hanzo (素数筛+区间枚举)

    Help Hanzo 题意:求a~b间素数个数(1 ≤ a ≤ b < 231, b - a ≤ 100000).     (全题在文末) 题解: a~b枚举必定TLE,普通打表MLE,真是头疼 ...

  5. 枚举:enum

    枚举 所谓枚举就是指定好取值范围,所有内容只能从指定范围取得. 例如,想定义一个color类,他只能有RED,GREEN,BLUE三种植. 使用简单类完成颜色固定取值问题. 1,就是说,一个类只能完成 ...

  6. .NET 基础一步步一幕幕[方法、结构、枚举]

    方法.结构.枚举 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值,写void 方法名:P ...

  7. Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件

    在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// <su ...

  8. 用枚举enum替代int常量

    枚举的好处: 1. 类型安全性 2.使用方便性 public class EnumDemo { enum Color{ RED(3),BLUE(5),BLACK(8),YELLOW(13),GREEN ...

  9. c#编程基础之枚举

    枚举的意义就在于限制变量取值范围. 当可以确定的几种取值时才可以用. 如果输入一个字符串需要进行判断是否是我们需要的字符串时,则一般需要这样写: using System; using System. ...

随机推荐

  1. Android Dialog(对话框)

    一个对话框一般是一个出现在当前Activity之上的一个小窗口. 处于下面的Activity失去焦点, 对话框接受所有的用户交互. 对话框一般用于提示信息和与当前应用程序直接相关的小功能. Andro ...

  2. golang 依赖控制反转(IoC)

    主流开发语言,为了达到项目间的低耦合,都会借助IoC框架来实现.即抽象和实现分离,使用抽象层,不用关心这些抽象层的具体实现:抽象层的实现,可以独立实现.现在比较流行的领域驱动设计(ddd),为了达到将 ...

  3. 用于主题检测的临时日志(fe4edac1-b4f4-4673-ae87-110cbb7dbb5a - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

    这是一个未删除的临时日志.请手动删除它.(25ea5485-9168-424b-a30c-09cc1371e2d9 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

  4. 注册Model类

    根据username查找是否存在相同的用户名的方法 自动填充功能填充注册时间字段 如果两次输入的密码一直则写入数据库的方法 userModel.class.php <?php /**** 燕十八 ...

  5. Cordova+angularjs+ionic+vs2015开发(五)

    欢迎加群学习:457351423 这里有4000多部学习视频,涵盖各种技术,有需要的欢迎进群学习! 一.创建侧边菜单和导航项目 1.使用VS创建一个Ionic空项目,同时创建一个Ionic SideM ...

  6. ERwin 连接 mysql

    1. install mysql connector; 2. run odbc connection management (c:\windows\syswow64\odbcad32.exe); 3. ...

  7. VS2010 VS2012 如何连接Oracle 11g数据库

    oracle是开发者常用的数据库,在做.NET开发是,由于Vs自带的驱动只能连接oracle 10g及以下版本,那么如何连接oracle 11g呢? 工具/原料   事先安装VS2010或者VS201 ...

  8. html-----017

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 鼠标点击input时,placeholder中的提示信息消失

    html代码: <input type="text" placeholder="多个关键词空格隔开"> 鼠标点击input时,placeholder ...

  10. LevelDb原理剖析

    在说LevelDb之前,先认识两位大牛,Jeff Dean和Sanjay Ghemawat,这两位是Google公司重量级的工程师,为数甚少的Google Fellow之二. Jeff Dean其人: ...