阅读背景:

洛谷 P3741 honoka的键盘 题解 (字符串 C/C++)

来源:互联网 
主要进行两次遍历,第一次统计"VK"个数,并将它们都赋予非"VK"的字符即可,为了第二次遍历进行区分。 第二次遍历找"VV"或者"KK"的子串(“KV”不符合题意),有的话结果加1即可 //#define LOCAL #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <algorithm> #include <cctype> #define inf 0x3f3f3f3f #define eps 1e-6 using namespace std; #define clr(x) memset(x,0,sizeof((x))) const int maxn = 1e4+1;//2e6+1 #define MAX(a,b,c) ((a)>(b)?((a)>(c)?(a):(c)):((b)>(c)?(b):(c))) #define _max(a,b) ((a) > (b) ? (a) : (b)) #define _min(a,b) ((a) < (b) ? (a) : (b)) #define _for(a,b,c) for(int a = b;a<c;a++) int main() { #ifdef LOCAL freopen("data.in","r",stdin); freopen("data.out","w",stdout); #endif int n,cnt=0; string s; cin>>n>>s; for(int i = 0;i<n-1;) { if(s[i]=='V'&&s[i+1]=='K') { s[i] = s[i+1] = 'O'; cnt++; i+=2; } else i++; } for(int i = 0;i<n-1;i++) { if((s[i]==s[i+1])&&s[i]!='O'){ cnt++; break; } } cout<<cnt; return 0; } 主要进行两次遍历,第一次统计"VK"个数,并将它们都赋予非"VK"的字符即可,为了第二次遍历进行区



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: