honoka的键盘

honoka的键盘

题目背景

honoka 有一个只有两个键的键盘。

题目描述

一天,她打出了一个只有这两个字符的字符串。当这个字符串里含有 VK 这个字符串的时候,honoka 就特别喜欢这个字符串。所以,她想改变至多一个字符(或者不做任何改变)来最大化这个字符串内 VK 出现的次数。给出原来的字符串,请计算她最多能使这个字符串内出现多少次 VK(只有当 VK 正好相邻时,我们认为出现了 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 1n100

题解

#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可+1
        if((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;
}

猜你喜欢

转载自blog.csdn.net/pleasantgoat17/article/details/136749330