标签:个数 string space show 单位 namespace substr lan tar
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3985
题意:
给出一个长度为n的字符串,全部由‘C‘和‘P‘组成;
then,可以在原有字符串的基础上添加任意多个’C’或’P’,每次添加一个就要花费一些value,花费的value = i - 1(个数i=1,2,3,……);
在任意的地方只要组成”CCPC”就可以获得一单位value,问你到最后可以获得最多多少单位的value。
题解:
观察一下就可以知道,任何添加两个及以上字符的行为都是没有价值增加的。
所以,最多只需要增加一个字符。
先遍历把"CCPC"找出来,然后剩下去判断是否可以利用"CCC"/"CCP"/"CPC"来生成目标字符串”CCPC”;
AC代码:
#include<bits/stdc++.h> using namespace std; int n; string str; string ccpc="CCPC", ccc="CCC", ccp="CCP", cpc="CPC"; int main() { int t; scanf("%d",&t); while(t--) { scanf("%d",&n); cin>>str; int value=0; bool flag=0; for(int i=0;i<n;i++) { if(str.substr(i,4)==ccpc) { value++; i+=2; continue; } if(flag) continue; string tmp=str.substr(i,3); if(tmp==ccc || tmp==ccp || tmp==cpc) { if(tmp==ccc && str.substr(i+1,4)==ccpc) continue; //这里需要特判一下 value++; flag=1; } } printf("%d\n",value); } }
ZOJ 3985 - String of CCPC - [字符串处理]
标签:个数 string space show 单位 namespace substr lan tar
原文地址:http://www.cnblogs.com/dilthey/p/7788042.html