首页 > 其他 > 详细

ZOJ 3985 - String of CCPC - [字符串处理]

时间:2017-11-05 18:22:46      阅读:340      评论:0      收藏:0      [点我收藏+]

题目链接: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 - [字符串处理]

原文:http://www.cnblogs.com/dilthey/p/7788042.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!