洛谷-P3741 honoka的键盘

洛谷-P3741 honoka的键盘

原题链接:https://www.luogu.com.cn/problem/P3741


题目背景

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

题目描述

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

输入格式

第一行给出一个数字 \(n\),代表字符串的长度。

第二行给出一个字符串 \(s\)

输出格式

第一行输出一个整数代表所求答案。

输入输出样例

输入 #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\%\) 的数据,\(1\le n\le 100\)

C++代码

#include <iostream>
#include <cstring>
using namespace std;

int n;
char c[105];

int countVK() {
    int ans = 0;
    for (int i=0; i<n-1; ++i)
        if (c[i] == 'V' && c[i+1] == 'K')
            ++ans;
    return ans;
}

int main() {
    cin >> n >> c;
    int ans = countVK();
    for (int i=0; i<n-1; ++i)
        if (c[i] == c[i+1])
            if (c[i] == 'V') {
                c[i+1] = 'K';
                ans = max(ans, countVK());
                c[i+1] = 'V';
            } else {
                c[i] = 'V';
                ans = max(ans, countVK());
                c[i] = 'K';
            }
    cout << ans << endl;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/yuzec/p/13384629.html
今日推荐