题目链接:http://lightoj.com/volume_showproblem.php?problem=1051

题目大意:给你一个字符串,只包含大写字母和‘?’,如果字符串中出现了连续三个以上的元音字母或者连续五个以上的辅音字母,则这个字符串是bad,不然就是good.

‘?’号可以替换任意字母。替换以后如果既可以出现连续三个以上的元音字母或者连续五个以上的辅音字母,也可以不出现,则输出Mixed.

算法思路(参考别人的):这个地方出现不含‘?’的连续三个以上的元音字母或者连续五个以上的辅音字母则为BAD,  如果含‘?’,则看替换后的情况。具体看代码。

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; int main()
{
//freopen("E:\\acm\\input.txt","r",stdin);
int T;
cin>>T;
bool flag[] = {};
flag[]=flag[]=flag[]=flag[]=flag[]=; for(int cas=; cas<=T; cas++)
{
char s[];
bool dp[][][] = {}; //dp[][i][j] 表示到某一位是前面有i个元音,j个辅音相连。前面的一维用于dp前后递推
scanf("%s",s+);
int n = strlen(s+);
bool badflag,goodflag;
badflag = goodflag = ; dp[][][] = true;
for(int i=; i<=n; i++)
{
memset(dp[i%],,sizeof(dp[i%]));
for(int j=; j<; j++) //前面元音个数为j的情况。
{
if(!dp[(i+)%][j][]) continue;
if(s[i] == '?') dp[i%][j+][] = dp[i%][][] = ;
else if(flag[s[i]-'A']) dp[i%][j+][] = ;
else dp[i%][][] = ;
} for(int j=; j<; j++) //前面辅音个数为j的情况。
{
if(!dp[(i+)%][][j]) continue;
if(s[i] == '?') dp[i%][][j+] = dp[i%][][] = ;
else if(flag[s[i]-'A']) dp[i%][][] = ;
else dp[i%][][j+] = ;
}
if(dp[i%][][] || dp[i%][][]) badflag = true;
}
for(int i=;i<;i++) if(dp[n%][i][]) goodflag = true;
for(int i=;i<;i++) if(dp[n%][][i]) goodflag = true; printf("Case %d: ",cas);
if(goodflag && badflag) printf("MIXED\n");
else if(badflag) printf("BAD\n");
else printf("GOOD\n");
}
}

lightoj1051 Good and Bad (dp)的更多相关文章

  1. LightOJ1051 Good or Bad(DP)

    这题感觉做法应该挺多吧,数据规模那么小. 我用DP乱搞了.. dp0[i][j]表示字符串前i位能否组成末尾有连续j个元音字母 dp1[i][j]表示字符串前i位能否组成末尾有连续j个辅音字母 我的转 ...

  2. BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 4142  Solved: 1964[Submit][Statu ...

  3. 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...

  4. AEAI DP V3.7.0 发布,开源综合应用开发平台

    1  升级说明 AEAI DP 3.7版本是AEAI DP一个里程碑版本,基于JDK1.7开发,在本版本中新增支持Rest服务开发机制(默认支持WebService服务开发机制),且支持WS服务.RS ...

  5. AEAI DP V3.6.0 升级说明,开源综合应用开发平台

    AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...

  6. BZOJ 1597: [Usaco2008 Mar]土地购买 [斜率优化DP]

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4026  Solved: 1473[Submit] ...

  7. [斜率优化DP]【学习笔记】【更新中】

    参考资料: 1.元旦集训的课件已经很好了 http://files.cnblogs.com/files/candy99/dp.pdf 2.http://www.cnblogs.com/MashiroS ...

  8. BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9812  Solved: 3978[Submit][St ...

  9. px、dp和sp,这些单位有什么区别?

    DP 这个是最常用但也最难理解的尺寸单位.它与“像素密度”密切相关,所以 首先我们解释一下什么是像素密度.假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,则我们可以计算 ...

随机推荐

  1. CoreAnimation3-专用图层

    CAShapeLayer CAShapeLayer是一个通过矢量图形而不是bitmap来绘制的图层子类.你指定诸如颜色和线宽等属性,用CGPath来定义想要绘制的图形,最后CAShapeLayer就自 ...

  2. CSS 伪元素

    CSS伪元素是用来添加一些选择器的特殊效果. 语法 伪元素的语法: selector:pseudo-element {property:value;} CSS类也可以使用伪元素: selector.c ...

  3. 数据库(学习整理)----4--Oracle数据查询(基础点1)

    其他: 计算机中的内存是线性的,一维. length('')计算字符的个数,而不是字节的个数 Oracle中的日期类型和数值类型的数据可以做运算符(>,=,<,<>)比较 如果 ...

  4. Java程序实现导出Excel,支持IE低版本

    来博客园两年多了,最近才开通了微博,因为懒所以也一直没有写东西,今天想整理一下自己前段时间遇到的一个导出的问题. 因为项目的需求,要做一部分导出功能.开始的时候用的公司的导出,但是很奇怪有部分模块导出 ...

  5. POJ_1088 滑雪(记忆型DP+DFS)

    Description Michael喜欢滑雪,这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  6. php 微信3 自定义菜单

    <pre name="code" class="php"><pre name="code" class="htm ...

  7. 创业 CEO:如何选择投资人

    欢迎来到「创业 CEO」系列,在这个系列中,我们讨论一个创业者如何教会自己成为一位伟大的 CEO,因为历史上最伟大的创业公司,往往都是由这样的人在领导. AppWorks 成立至今,总共参与投资了 2 ...

  8. root 密码丢失后的重新设置

    /usr/local/mysql/bin/mysqld_safe --skip-grant-tables & mysql> use mysql; mysql> update use ...

  9. 开发错误日志之IllegalArgumentException:MALFORMED

    java.lang.IllegalArgumentException: MALFORMED 上面存在中文问题是因为java.util.zip下的格式转换有问题 ,jdk中的zip存在字符编码的问题. ...

  10. easyui-combobox小Demo

    <script type="text/javascript"> $("#Function_TypeSelect").combobox({ onSel ...