P3741 honoka的键盘
题目背景
honoka 有一个只有两个键的键盘。
题目描述
一天,她打出了一个只有这两个字符的字符串。当这个字符串里含有 VK
这个字符串的时候,honoka 就特别喜欢这个字符串。所以,她想改变至多一个字符(或者不做任何改变)来最大化这个字符串内 VK
出现的次数。给出原来的字符串,请计算她最多能使这个字符串内出现多少次 VK
(只有当 V
和 K
正好相邻时,我们认为出现了 VK
。)
输入格式
第一行给出一个数字 nnn,代表字符串的长度。
第二行给出一个字符串 sss。
输出格式
第一行输出一个整数代表所求答案。
输入输出样例
输入 #1
2
VK
输出 #1
1
输入 #2
2
VV
输出 #2
1
输入 #3
1
V
输出 #3
0
输入 #4
20
VKKKKKKKKKVVVVVVVVVK
输出 #4
3
输入 #5
4
KVKV
输出 #5
1
说明/提示
对于 100%100%100% 的数据,1≤n≤1001\le n\le 1001≤n≤100。
#include <iostream>
using namespace std;
int main()
{
int n;
string str,str1;
cin>>n;
cin>>str;
str1=str;
str=' '+str+' ';
str1=' '+str1+' ';
if(n==1)
{
cout<<0;
return 0;
}
for(int i=1;i<str.size() ;++i)
{
bool flag=true;
if(flag)
{
if(str[i]=='V')
{
if(str[i-1]=='V'&&str[i+1]!='K')
{
str[i]='K';
str1[i]='K';
break;
}
}
else if(str[i]=='K')
{
if(str[i+1]=='K'&&str[i-1]!='V')
{
str[i]='V';
str1[i]='V';
break;
}
}
}
}
int sum=0;
for(int i=1;i<=str.size() ;i+=1)
{
if(str1[i]=='V'&&str1[i+1]=='K')sum++;
}
cout<<sum;
return 0;
}