这份代码(来自@BH9570):
#include<bits/stdc++.h>
using namespace std;
char s[105];
int main () {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> s[i];
}
int cnt = 0;
int change = 1;
for (int i = 0; i < n; i++) {
if (s[i] == 'V' && s[i+1] == 'K') {
cnt++;
i++;
continue;
}
else {
if (s[i] == s[i+1]) {
cnt += change;
change = 0;
}
}
}
cout << cnt << endl;
return 0;
}
92pts; 这份一百:
#include<bits/stdc++.h>
using namespace std;
char s[105];
bool vis[103];
int main () {
int n;
cin >> n;
int un=0;
for (int i = 0; i < n; i++) {
cin >> s[i];
if(s>0&&s[i]=='K'&&s[i-1]=='V')
{
un++;
vis[i]=vis[i-1]=1;
}
}
int cnt = 0;
//int change = 1;
for (int i = 0; i < n-1; i++) {
if (s[i] == s[i+1]&&!vis[i]&&!vis[i+1]) {
cnt=1;
}
}
cout << cnt+un << endl;
return 0;
}
un 是不修改的 VK 个数,最后判断有没有相邻的相同字符时要特别注意它们属不属于某一个“VK”。
比如 VKK,答案是 1,但上面的的程序会输出 2,因为 KK 的第一个 K 属于前面的 VK。
92 分是没有做到判断。