LightOJ 1051 - Good or Bad(DP)
2015-11-26 17:14
531 查看
题意:给一字符串,包括字母和问号,问号可能是任何英文字母。若出现连续3个元音或5个辅音,则为BAD,否则为GOOD。若既可能为GOOD也可能为BAD,输出"MIXED"。
思路:dp1[i][j]表示到i为止,连续j个元音可否达到。dp2表示辅音。
思路:dp1[i][j]表示到i为止,连续j个元音可否达到。dp2表示辅音。
#include <algorithm> #include <iostream> #include <sstream> #include <cstring> #include <cstdio> #include <vector> #include <string> #include <queue> #include <stack> #include <cmath> #include <set> #include <map> using namespace std; typedef long long LL; #define mem(a, n) memset(a, n, sizeof(a)) #define ALL(v) v.begin(), v.end() #define si(a) scanf("%d", &a) #define sii(a, b) scanf("%d%d", &a, &b) #define siii(a, b, c) scanf("%d%d%d", &a, &b, &c) #define pb push_back #define eps 1e-8 const int inf = 0x3f3f3f3f, N = 50 + 5, MOD = 1e9 + 7; int T, cas = 0; int n, m; int dp1 [4], dp2 [6], a ; char s ; char print[] = { "MIXED", "GOOD", "BAD" }; int judge(char x) { return x == 'A' || x=='E' || x=='I' || x=='O' || x == 'U'; } int main(){ #ifdef LOCAL freopen("/Users/apple/input.txt", "r", stdin); // freopen("/Users/apple/out.txt", "w", stdout); #endif si(T); while(T --) { scanf("%s", s + 1); mem(a, 0); n = strlen(s + 1); mem(dp1, 0), mem(dp2, 0); dp1[0][0] = dp2[0][0] = 1; for(int i = 1; i <= n; i ++) { if(s[i] == '?') a[i] = 0; else if(judge(s[i])) a[i] = 1; else a[i] = 2; for(int j = 0; j <= 2; j ++) { if(dp1[i-1][j]) { if(a[i] == 0 || a[i] == 2) dp2[i][1] = 1; if(a[i] == 0 || a[i] == 1) dp1[i][j+1] = 1; } } for(int j = 0; j <= 4; j ++) { if(dp2[i-1][j]) { if(a[i] == 0 || a[i] == 2) dp2[i][j+1] = 1; if(a[i] == 0 || a[i] == 1) dp1[i][1] = 1; } } } int good = 0, bad = 0, ans; for(int i = 0; i <= 2; i ++) good |= dp1 [i]; for(int i = 0; i <= 4; i ++) good |= dp2 [i]; for(int i = 1; i <= n; i ++) if(dp1[i][3] || dp2[i][5]) bad = 1; if(good && bad) ans = 0; else if(good) ans = 1; else ans = 2; printf("Case %d: %s\n", ++ cas, print[ans]); } return 0; }
相关文章推荐
- poj 1353 Color Change of Go Game Pieces 模拟
- 如何实现支持数亿用户的长连消息系统 | Golang高并发案例
- Category(分类)及类扩展
- mongo 集群时间不同步异常
- <10> go test单元测试
- 突破限制爬取网页数据 googlesholar为例【转】
- Beego模板 循环和判断几个例子
- Django实现自定义的manage名利
- 高通工具SnapdragonProfiler的安装和基本使用说明
- Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
- Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
- Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
- Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision
- Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision
- Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
- egret dragonbones部件替换产生位移的解决方案
- go 遍历目录 --在原文上改的,原文在那找不到了