免费网站设计,购物网站开发模板,app运营推广是干什么,网站怎么申请支付宝接口题目背景
honoka 有一个只有两个键的键盘。
题目描述
一天#xff0c;她打出了一个只有这两个字符的字符串。当这个字符串里含有 VK 这个字符串的时候#xff0c;honoka 就特别喜欢这个字符串。所以#xff0c;她想改变至多一个字符#xff08;或者不做任何改变#xf…题目背景
honoka 有一个只有两个键的键盘。
题目描述
一天她打出了一个只有这两个字符的字符串。当这个字符串里含有 VK 这个字符串的时候honoka 就特别喜欢这个字符串。所以她想改变至多一个字符或者不做任何改变来最大化这个字符串内 VK 出现的次数。给出原来的字符串请计算她最多能使这个字符串内出现多少次 VK只有当 V 和 K 正好相邻时我们认为出现了 VK。
输入格式
第一行给出一个数字 n n n代表字符串的长度。
第二行给出一个字符串 s s s。
输出格式
第一行输出一个整数代表所求答案。
1.题目分析
输入一段指定长度的字符串计算出现VK的次数可以修改一次是VK的数量最大化。 值得一提的是需要先把字符串中的VK去除再遍历找到VV或者KK计数一次跳出循环即可。 去除的目的是为了寻找KK和VV时不影响结果的判断。
2.题目思路
输入一段字符串判断相邻两个字符是否为VK如果是将这两个元素置为零计数器加一。 第二轮循环判断剩余元素中是否出现KK和VV出现说明可以修改一次得到VK让计数器加一后跳出循环。
值得一提的是要杜绝数组索引越界的情况。
3.代码演示
#include stdio.hint main() {int n;scanf(%d, n);char str[n];scanf(%s, str);int cnt 0;for (int i 0; i n; i) {//统计VK的数量//防止索引越界if (i 1 n) {if (str[i] V str[i 1] K) {cnt;//把VK消除str[i] 0;str[i 1] 0;}}}for (int i 0; i n; i) {//修改vv kk的情况//防止索引越界if (i 1 n) {//修改 vv 和 kk的情况if (str[i] V str[i 1] V) {cnt;break;} else if (str[i] K str[i 1] K) {cnt;break;}}}printf(%d, cnt);return 0;
}