这个代码没有正确判定 `VK`,总体而言,您的思路有一点问题。下面是一点修改建议,供参考:
1. 先统计出一共有多少个 `VK`;
2. 枚举每一个位置,并尝试修改他,看会增加或减少多少个 `VK`;
3. 对于每一次的 2 操作,取最大值即答案。
by chat_jinxuan @ 2023-11-30 14:23:14
```cpp
#include <iostream>
using namespace std;
int main()
{
string s;
int a=0;
int x=0;
cin >> a;
cin >> s;
for(int i=0; i<a; i++)
{
if(s[i]=='V' && s[i+1]=='K') x++; // 预先统计一共有多少个 VK
}
for(int i=0; i<a; i++)
{
if(s[i]=='K') // 看看能不能把这个修改成 V
{
if(s[i+1]=='K' && s[i-1]!='V') // 要考虑会不会减少 VK 的数量,会减少还不如不做
{
x++;
break; // 经过修改,VK 的数量最多只会增加一个
}
}
if(s[i]=='V') // 看看能不能把这个修改成 K
{
if(s[i-1]=='V' && s[i+1]!='K') // 要考虑会不会减少 VK 的数量,会减少还不如不做
{
x++;
break; // 经过修改,VK 的数量最多只会增加一个
}
}
}
cout << x;
return 0;
}
```
by chat_jinxuan @ 2023-11-30 14:33:25
@[chat_jinxuan](/user/726525) 感谢!!!
by bzdzdbzd @ 2023-11-30 14:40:03
@[chat_jinxuan](/user/726525) ( ఠൠఠ )ノ
by lizihe123456 @ 2023-11-30 15:31:56