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