1. 程式人生 > >ZOJ 3985 - String of CCPC - [字符串處理]

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

沒有 nbsp ring 觀察 == () spa value zju

題目鏈接: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 - [字符串處理]