(水题)简单题
来源:互联网 发布:人死犯冷退的算法 编辑:程序博客网 时间:2024/06/05 19:45
Problem 2183 简单题
Accept: 94 Submit: 399
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
现在有一些被简单压缩的字符串,例如:a[120]代表120个a。对于字符串acb[3]d[5]e相对于acbbbddddde
现在给你两个字符串cString, nString.一个是被压缩过的字符串,另一个没有被压缩。
求nString是否为cString的子串,如果是输出True,否则输出False.cString的长度clen的范围是0<clen<1000, nString的长度的nlen的范围是0<nlen<1000;cString只包含小写26个字母,[],数字(大于0小于10^9)。nString只包含小写26个字母。
Sample Input
acb[3]d[5]ebd
Sample Output
True
Source
FOJ有奖月赛-2015年03月水题,注意 cString 可能有abc[3]c[1]ccde 的情况。注意预处理的技巧。
//http://acm.fzu.edu.cn/problem.php?pid=2183#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;typedef long long LL;const int MAXN = 1005;const int INF = 0xfffffff;const double EPS = 1e-8;char cstr[MAXN], nstr[MAXN];char n[MAXN * 8], c[MAXN * 8];int clen, nlen;LL N[MAXN], C[MAXN];void Do0(){memset(C, 0, sizeof(C));int len = strlen(cstr);int top = 0;char last = 0;for (int i = 0; i < len; i++){if ('a' <= cstr[i] && cstr[i] <= 'z'){if (cstr[i] == last){if (cstr[i + 1] == '['){int tmp = 0;i+=2;while (cstr[i] != ']')tmp = tmp * 10 + (cstr[i++] - '0');C[top - 1] += tmp;}else{C[top - 1]++;}}else{last = cstr[i];c[top] = cstr[i];if (cstr[i + 1] == '['){int tmp = 0;i+=2;while (cstr[i] != ']')tmp = tmp * 10 + (cstr[i++] - '0');C[top++] += tmp;}elseC[top++] = 1;}}}clen = top;}void Do1(){memset(N, 0, sizeof(N));int len = strlen(nstr);char last = 0;int top = 0;for (int i = 0; i < len; i++){if (last != nstr[i]){N[top] = 1;n[top++] = nstr[i];last = nstr[i];}else{N[top-1]++;}}nlen = top;}bool Judge(int i){for (int j = 0; j < nlen; j++,i++){if (c[i] == n[j]){if (C[i] == N[j])continue;else if (C[i]>N[j]){if (j == 0 || j == nlen - 1)continue;else return false;}else return false;}else return false;}return true;}bool Find(){for (int i = 0; i < clen; i++){if (c[i] == n[0])if (Judge(i))return true;}return false;}int main(){//freopen("F:\\input.txt","r",stdin);while (scanf("%s", cstr) != EOF){scanf("%s", nstr);Do0();Do1();printf("%s\n", Find() ? "True" : "False");}return 0;}
0 0
- (水题)简单题
- HDU2734(简单题)
- HDU1064(简单题)
- uva10167 (简单题)
- 简单题(二分)
- hdoj1013(简单题)
- csu 1785: 又一道简单题 (没错,简单题)
- PAT-两个数的简单计算器(简单编程题)
- PAT-简单阶乘计算 (简单函数题)
- poj 1654 area 简单多边形面积(简单题)
- HDU 1225(简单题)
- hdoj 1058(简单题)
- Rescue(简单搜索题)
- hdu 4079 (简单题)
- C - 上车(简单题)
- No Girlfriend(简单题)
- HDU2567(字符串简单题)
- Pangram(简单水题)
- File中createNewFile()和createTempFile()区别
- AOP--从代理说起
- 面经
- sublime Text3修改字体样式
- 括号配对问题
- (水题)简单题
- springMVC获取请求消息体json串
- Spring
- 用supervisor监控nginx注意事项
- 第二章第三题
- ZOJ 3769 Diablo III
- UVA 1252 - Twenty Questions(状态压缩DP+记忆化搜索)
- Gif,png,jpg,webp几种图片格式整理
- 矩阵连乘时最少乘法次数