Codeforces 801A Vicious Keyboard
2017-04-17 10:20
134 查看
原题传送
先算出给出的字符串中含多少个"VK",接着用for循环每次改变字符串的一个字符,再算出改变后的字符串中含多少个"VK",最后取最大值
代码:
这题还可以这样做:
先算出给出的字符串中含多少个"VK",算的时候如果出现"VK"让对应位置的字符变为无意义字符,然后接着找"VV"或"KK",由于只能改变一个字符,所以找到一组"VV"或"KK"即可
代码:
先算出给出的字符串中含多少个"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; }
相关文章推荐
- Codeforces 230A
- codeforces_677D. Vanya and Treasure(BFS+DP)
- Codeforces 4C Registration system 题解
- codeforces 257 div2 B
- codeforces 680C Bear and Prime 100
- codeforces 263A(Beautiful Matrix) Java
- Codeforces 449B - Jzzhu and Cities / 450D - Jzzhu and Cities
- CODEFORCES 384A Coder
- Codeforces 455D Serega and Fun【解法二】
- Codeforces 450A Jzzhu and Children
- CodeForces 688 A
- Codeforces 816 -B. Karen and Coffee
- CodeForces 1A
- CodeForces 688A Opponents (水题)
- 「6月雅礼集训 2017 Day10」perm(CodeForces 698F)
- Codeforces_449B 最短路+统计
- CodeForces 687B Remainders Game
- 【Codeforces Round #420 (Div. 2)】Codeforces 821ABCDE
- Codeforces_450B_Jzzhu and Sequences(循环节or矩阵快速幂)
- Codeforces 622C Not Equal on a Segment 【线段树 Or DP】