CF传统的思维题。感觉这种题目想到了就很简单,想不到就GG,看了别人的思路才写出来的,做个记录。
思路:先遍历一遍字符串,标记上VK,然后再遍历一遍除去标记的字符串,如果有连续的如VV或KK则加上1,这两种情况都可以转换成VK。
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int cnt;
char s[105];
int main(){
while(scanf("%s",s)!=EOF){
int length=strlen(s);
cnt=0;
for(int i=0;i<length;i++){
if(s[i]=='V'&&s[i+1]=='K'){
cnt++;
s[i]=s[i+1]='#';
i++;
}
}
for(int i=0;i<length;i++){
if((s[i]=='V'&&s[i+1]=='V')||(s[i]=='K'&&s[i+1]=='K')){
cnt++;
break;
}
}
printf("%d\n",cnt);
}
return 0;
}