ZOJ 3985 - String of CCPC - [字符串處理]
阿新 • • 發佈:2017-11-05
沒有 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 - [字符串處理]