EOJ 3194 字符串消除
给定一个由大写字母’A’、’B’、’C’构成的字符串s,按如下进行消除过程:
1、字符串s中连续相同字母组成的子串,如果子串的长度大于1,那么这些子串会被同时消除,余下的字符拼成新的字符串。
例如:”ABCCBCCCAA”中”CC”,”CCC”和”AA”会被同时消除,余下”AB”和”B”拼成新的字符串”ABB”。
2、反复进行上述消除,直到新的字符串中相邻字符都不相同为止。
例如:”ABCCBCCCAA”经过一轮消除得到”ABB”,再经过一轮消除得到”A”。
假设在对字符串s消除开始前,允许在s中任意位置(第一个字符之前、最后一个字符之后以及相邻两个字符之间)插入任意一个字符(‘A’,’B’或者’C’),得到字符串t,然后对字符串t经过一系列消除。
请问该如何插入字符,使得字符串t中被消除掉的字符总数(包括插入的字符)最多?
Input
第 1 行:整数 T (1≤T≤10) 为问题数。
第 2 ~ T+1 行:每个问题占一行,每行输入一个由’A’、’B’、’C’组成的字符串s,长度不超过100。
Output
对每个测试数据,首先输出一行问题的编号(0 开始编号,格式:case #0: 等)。在接下来一行中输出被消除掉的最大字符数。
Examples
3
ABCBCCCAA
AAA
ABC
case #0:
9
case #1:
4
case #2:
2
Note
第一组数据:在”ABCBCCCAA”的第2个字符后插入’C’得到”ABCCBCCCAA”,消除后得到”A”,总共消除9个字符(包括插入的’C’)。
#include <iostream>
#include <string>
using namespace std;
string x[] = { "A","B","C" };
void del(int& ans,string tmp)
{
int len=tmp.size();
while()
{
int flag=;//判断是否可以继续消除
for(string::iterator it=tmp.begin(),t,s;it<tmp.end()-;)//小心it越界
if(*(it+)==*it)
{
flag=;
int x=it-tmp.begin();//x记录上次消除位置,以便从后继续消除
t=it;
while(it<tmp.end()-&&*(it+)==*it) it++;
tmp.erase(t,it+);
x=x<?:x;
it=tmp.begin()+x;
}
else it++;
if(flag==) break;
}
ans=ans>(len-tmp.size())?ans:len-tmp.size();
}
int main()
{
int T;cin>>T;
for(int m=;m<T;m++)
{
string s;cin>>s;
int ans=;
for(int i=;i<=s.size();i++)
{
for(int j=;j<;j++)
{
string tmp=s;tmp.insert(i,x[j]);
del(ans,tmp);
}
}
printf("case #%d:\n%d\n",m,ans); }
return ;
}
在字符串的每个空格(包括首尾)处插入A或B或C,消除连续相同字母组成的字串,判断无可消除字串后退出,经过几次比较,得出消除最多的字符个数。
注意是同时消除,因此应该在消除之后从消除的地方继续向后找字串,而不是从头开始找。
如ABCCBCCCAA,第一次消除CC,CCC,AA,而不是第一次消除得ABBCCCAA,然后继续消除BB,CCC,AAA,这样结果就是全部消除了,这也是我一开始WA的原因。
EOJ 3194 字符串消除的更多相关文章
- 【hihocoder 1039 字符串消除】模拟
题目链接:http://hihocoder.com/problemset/problem/1039 题意:给定一个只由{A, B, C}组成的字符串s,长度为n, 故包含n+1个空隙:现要求在某个空隙 ...
- shell 进阶之匹配字符串
一,操作字符串 1,字符串长度 expr 命令取字符串函数 自带shell函数读取 2,匹配字符串开头字串的长度 !!!!!!!!!!!!$substring是正则表达式.!!!!!!!!! ...
- APNS 远程推送通知 PUSH deviceToken
服务器向客户端推送消息: 当应用程序推到后台,或者根本就没有运行(我们的代码无能为力) 如果这种情况之下,应用程序想和用户交互(传统的做法 不可能) 推送 APNS:Ap ...
- 【人在江湖飘,哪有不带刀】神器Jumony
大神博客:http://www.cnblogs.com/Ivony/p/3447536.html 项目地址:https://github.com/Ivony/Jumony 1.安装Jumony包 在N ...
- leetcode:Multiply Strings
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
- Longest Palindromic Substring-----最长回文子串
首先讲讲什么是回文, 看看Wiki是怎么说的:回文,亦称回环,是正读反读都能读通的句子.亦有将文字排列成圆圈者,是一种修辞方式和文字游戏.回环运用得当.能够表现两种事物或现象相互依靠或排斥的关系, 比 ...
- Qt国际化相关类(以前没见过codec->toUnicode,QTextCodec,QLocale.toString和QLocale::setDefault,QInputMethod::locale())
QTextCodec QTextCodec为文本编码之间提供转换. Qt用Unicode 来存储,绘制和操作字符串.在很多情况下你可能希望操作不同编码的数据.例如,大部分日本文档是以Shift-JIS ...
- Qt国际化相关类
QTextCodec QTextCodec为文本编码之间提供转换. Qt用Unicode 来存储,绘制和操作字符串.在很多情况下你可能希望操作不同编码的数据.例如,大部分日本文档是以Shift-JIS ...
- python内置类型详细解释
文章编写借鉴于内置类型 - Python 3.7.3 文档,主要用于自己学习和记录 python主要内置类型包括数字.序列.映射.类.实例和异常 有些多项集类是可变的.它们用于添加.移除或重排其成员的 ...
随机推荐
- 重现apache commons fileupload DOS漏洞
这个漏洞是2014年2月4日被发现的, 因为该组件试用范围非常广, 所以该漏洞的影响也非常巨大.通过特制的包含畸形header的http请求,可以导致使用该组件的应用程序进入无限循环从而耗尽CPU等资 ...
- 2015.12.20-2015.12.25 大论文迭代 A
进一步充实大论文内容.结构,完善一遍大论文 12.20周天,完成论文第五章总结部分,和第一章的修改 12.21周一,完成论文第二章的修改充实 12.22周二,完成论文第三章的修改充实 12.23周三, ...
- day11-函数对象、名称空间和作用域
目录 函数对象 函数的嵌套 名称空间和作用域 内置名称空间 全局名称空间 局部名称空间 作用域 全局作用域 局部作用域 global和nonlocal 函数对象 在Python中,一切皆对象,函数也是 ...
- 调用CAD内的颜色选择对话框
colordialog类 int color; acedSetColorDialog(color,TRUE,0); 第一个函数返回的是颜色的RGB值
- Josephus problem(约瑟夫问题,丢手绢问题)
约瑟夫问题 约瑟夫环问题是一个数学应用题:已知n个人(以编号1,2,3.....,n)围坐在一张圆桌的周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列 ...
- csrf漏洞利用
low csrf(cross-site-request forgery),跨站请求伪造. 测试网站 --http://localhost/vulnerability/csrf 修改密码,点击chang ...
- CAD在网页绘一个直线,得到直线id,再调该得到直线对象,然写扩展数据
IMxDrawDatabase::ObjectIdToObject 实体id返回实体对象. 参数 说明 [in] LONGLONG lId 实体id JS代码,中绘一个直线,得到直线id,再调该得到直 ...
- JavaFX桌面应用开发-Button(按钮)与事件
1:Button样式的操作原始代码: package application; import javafx.application.Application;import javafx.scene.Gr ...
- [CodeForces] 274E Mirror Room
题意翻译 有一个n*m的格子图,其中有一些是黑色的,另一些为白色. 从某个白色格子的中心点向左上(NW),左下(SW),右上(NE),右下(SE)四个方向中的一个发出一束光线,若光线碰到黑色格子或者墙 ...
- 转:Windows Phone 7 设计简介
英文原文:smashingmagazine 导读:Windows Phone 7 引进了一个全新的内容管理和用户界面,命名为Metro的设计语言和理论.微软这次所看准的市场和用户群也与之前的老一代 W ...