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

做法:分情况讨论,一共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. 关于HTML5标签不兼容(IE6~8)

    HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单. 比较常用的HTML5的新标签元素有: <hea ...

  2. JavaScript入门(8)

    一.什么是对象 JavaScript中的所有事物都是对象.如:字符串.数值.数组.函数等.每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的.如:字符串的长度.图像的长宽 对象的方法:能 ...

  3. HTML5吧!少年

     一.为了能使IE9以下的IE浏览器也能支持html5的标签,所以首先得在文档头部用条件注释的方法引入那段著名的代码. 1 2 3 <!--[if lt IE 9]> <script ...

  4. SQL Server 2012 内存管理 (memory management) 改进

    SQL Server 2012 的内存管理和以前的版本相比,有以下的一些变化. 一.内存分配器的变化 SQL Server 2012以前的版本,比如SQL Server 2008 R2等, 有sing ...

  5. C#开发微信门户及应用-使用地理位置扩展相关应用

    C#开发微信门户及应用-使用地理位置扩展相关应用 我们知道,地理位置信息可以用来做很多相关的应用,除了我们可以知道用户所在的位置,还可以关联出一些地理位置的应用,如天气,热映影片,附近景点,附近影院, ...

  6. Decorator设计模式浅谈

    装饰类跟基础组件都实现了目标接口,是为了匹配正确的类型.Java中的IO设计就是典型的Decorator设计模式. 装饰模式产生的初衷是, 对默认实现类的行为进行扩展. 由于装饰类的构造器接受的参数是 ...

  7. Sencha Touch id 和 itemId

    通过id获得组件: var view=Ext.getCmp('id'); 通过itemId获得组件: var view = ComponentQuery.query('view_xtype'), // ...

  8. 第八篇、UITableView常用功能(左滑出现多个按钮,多选删除等)

    1.左滑动出现多个按钮 /** * 只要实现了这个方法,左滑出现按钮的功能就有了 (一旦左滑出现了N个按钮,tableView就进入了编辑模式, tableView.editing = YES) */ ...

  9. [jquery]基础篇--this与$this区别

    参考: http://www.cnblogs.com/hannover/p/4109779.html 1.JQuery this和$(this)的区别 相信很多刚接触JQuery的人,很多都会对$(t ...

  10. 09_httpclient测试SOAP协议

    [工程截图]注意:无需使用Wsimport生成客户端代码 [HttpClient.java] import java.io.ByteArrayOutputStream; import java.io. ...