您的位置:首页 > 其它

Codeforces 801A Vicious Keyboard

2017-04-17 10:20 134 查看
原题传送

先算出给出的字符串中含多少个"VK",接着用for循环每次改变字符串的一个字符,再算出改变后的字符串中含多少个"VK",最后取最大值

代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
char a[105];
char b[105];
int max = 0;
scanf("%s", a);
for(int i = 0; i + 1 < strlen(a); i++) {
if(!strncmp(a + i, "VK", 2))
max++;
}
int sum;
for(int j = 0; j < strlen(a); j++) {
sum = 0;
strcpy(b, a);
b[j] = (b[j] == 'V' ? 'K' : 'V');
for(int i = 0; i < strlen(b) - 1; i++) {
if(!strncmp(b + i, "VK", 2))
sum++;
}
if(sum > max)
max = sum;
}
printf("%d\n", max);
return 0;
}


这题还可以这样做:

先算出给出的字符串中含多少个"VK",算的时候如果出现"VK"让对应位置的字符变为无意义字符,然后接着找"VV"或"KK",由于只能改变一个字符,所以找到一组"VV"或"KK"即可

代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
char a[105];
int ans = 0;
scanf("%s", a);
for(int i = 0; i + 1 < strlen(a); i++) {
if(!strncmp(a + i, "VK", 2)) {
ans++;
a[i] = a[i + 1] = '0'; // 赋予a[i]、a[i+1]一个无意义的值
i++;
}
}
for(int i = 0; i + 1 < strlen(a); i++) {
if(!strncmp(a + i, "VV", 2) || !strncmp(a + i, "KK", 2)) {  //只需找一组就好
ans++;
break;
}
}
printf("%d\n", ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: