88tps求调(必关)
查看原帖
88tps求调(必关)
1402162
wyh122345楼主2025/7/18 20:27

代码如下

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
    int n;
    string s;
    cin >> n >> s;
    int originalCount = 0;
    for (int i = 0; i < n - 1; ++i) {
        if (s[i] == 'V' && s[i + 1] == 'K') {
            originalCount++;
        }
    }
    if (n < 2) {
        cout << 0 << endl;
        return 0;
    }

    int maxAdd = 0;
    for (int i = 0; i < n; ++i) {
        char originalChar = s[i];
        s[i] = 'V';
        if (i > 0 && s[i - 1] == 'K') maxAdd = max(maxAdd, 1); 
        if (i < n - 1 && s[i] == 'V' && s[i + 1] == 'K') maxAdd = max(maxAdd, 1);
        if (i > 0 && s[i - 1] == 'V' && s[i] == 'K') maxAdd = max(maxAdd, 1); 
        if (i < n - 1 && s[i] == 'V' && s[i + 1] == 'K') maxAdd = max(maxAdd, 1); 
        if (i > 0 && s[i - 1] == 'K' && s[i] == 'V') maxAdd = max(maxAdd, 1);
        s[i] = 'V';
        if (i + 1 < n && s[i] == 'V' && s[i + 1] == 'K') {
            maxAdd = max(maxAdd, 1);
        }
        if (i - 1 >= 0 && s[i - 1] == 'K' && s[i] == 'V') {
        }
        s[i] = 'K';
        if (i - 1 >= 0 && s[i - 1] == 'V' && s[i] == 'K') {
            maxAdd = max(maxAdd, 1);
        }
        if (i + 1 < n && s[i] == 'K' && s[i + 1] == 'V') {
        }
        s[i] = originalChar;
    }

    int result = originalCount + min(maxAdd, 1); 

    cout << result << endl;

    return 0;
}
2025/7/18 20:27
加载中...