洛谷P3741 honoka的键盘
题目背景
honoka 有一个只有两个键的键盘。
题目描述
一天,她打出了一个只有这两个字符的字符串。当这个字符串里含有 VK 这个字符串的时候,honoka 就特别喜欢这个字符串。所以,她想改变至多一个字符(或者不做任何改变)来最大化这个字符串内 VK 出现的次数。给出原来的字符串,请计算她最多能使这个字符串内出现多少次 VK(只有当 V 和 K 正好相邻时,我们认为出现了 VK。)
输入格式
第一行给出一个数字 nn,代表字符串的长度。
第二行给出一个字符串 ss。
输出格式
第一行输出一个整数代表所求答案。
输入输出样例
输入
2
VK
输出 1输入
2
VV
输出
1
说明/提示
对于 100%100% 的数据,1\le n\le 1001≤n≤100。
本题思路:
拿到题目先分析什么情况下才会结果增加,发现一共有两种情况:
1: 当输入为VK时
2: 当输入为VV或者KK时
如果输入是以KV就无法在最多一次的情况下完成。
找到思路直接开敲!!
22分代码
#include<bits/stdc++.h>
using namespace std;
int main()
{char s[101];int n,sum=0;scanf("%d",&n);scanf("%s",s);for(int i=0;i<n-1;i++){if(s[i]=='V'&&s[i+1]=='K')sum++;else if(s[i]==s[i+1]){sum++;}}printf("%d",sum);return 0;
}
之后发现了问题所在,如果我将两个条件都放在一个for语句里面的话,例如VVK和VKK这样的话就会多加上一个,随即进行修改。
88分代码
#include<bits/stdc++.h>
using namespace std;
int main()
{char s[101];int n,sum=0;scanf("%d",&n);scanf("%s",s);for(int i=0;i<n-1;i++){if(s[i]=='V'&&s[i+1]=='K')sum++;}for(int j=0;j<n-1;j++){if(s[j]==s[j+1]){sum++;printf("%d",sum);return 0;}}printf("%d",sum);return 0;
我把两个条件分开后提交后发现还是有些测试点不能过去,最后用dev上进行测试,发现VKK不能过,最后得出结论,如果我这样写,在上一个for里面自加后在下一个for里面也会自加,但是如果我中间的K改为V的话,那么上面的for里面的条件就无法满足了,因此我需要把上面使用过的字符数组要在下面的循环内不能使用。
最后附上AC代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{char s[101];int n,sum=0;scanf("%d",&n);scanf("%s",s);for(int i=0;i<n-1;i++){if(s[i]=='V'&&s[i+1]=='K'){sum++;s[i]='1;s[i+1]='2;}}for(int j=0;j<n-1;j++){if(s[j]==s[j+1]){sum++;printf("%d",sum);return 0;}}printf("%d",sum);return 0;
}
拜拜!!!
洛谷P3741 honoka的键盘相关推荐
- 洛谷P3741 honoka的键盘Java题解
这题的思路有俩: 思路1:将字符串转化成字符串数组,如何比对每相邻的值是否与VK相等,然后赋其他值,防止二次判断,这样先将VK找出,随后进行替换,如果出现VV或KK则替换一个即可变成VK,KV则不行 ...
- P3741 honoka的键盘 Java
P3741 honoka的键盘 Java 题目: 说明: 本题目我采用的是将输入字符串转换为数组,这样方便使用数组名[i]来引用元素. 这道题我出错在:找到"VK"字符串后,并没有 ...
- 【洛谷】P3741 honoka的键盘 c++
题目背景 honoka 有一个只有两个键的键盘. 题目描述 一天,她打出了一个只有这两个字符的字符串.当这个字符串里含有 VK 这个字符串的时候,honoka 就特别喜欢这个字符串.所以,她想改变至多 ...
- P3741 honoka的键盘(python)
题目背景 honoka 有一个只有两个键的键盘. 题目描述 一天,她打出了一个只有这两个字符的字符串.当这个字符串里含有 VK 这个字符串的时候,honoka 就特别喜欢这个字符串.所以,她想改变至多 ...
- contains()+replaceFirst()进行substring计数(洛谷P3741题题解,Java语言描述)
题目要求 P3741题目链接 分析 这题就别想复杂,其实很简单. 其实就是遇到VK就进行计数,并不再被统计(但不能让原本不相连的相连起来). 处理完VK以后,遇到VV或者KK就可以再一次counter ...
- 【OJ】洛谷字符串题单题解锦集
题单简介 题目解析 P5733[深基6.例1]自动修正 P1914 小书童--密码 P1125 笨小猴 P1957 口算练习题 P5015 标题统计 P5734[深基6.例6]文字处理软件 P1308 ...
- 【入门5】字符串(今天刷洛谷了嘛)
几道纯模拟题没有写,暂且先放一下 P5733 [深基6.例1]自动修正 #include<iostream> #include<algorithm> #include<c ...
- 洛谷——honoka的键盘
题目链接:honoka的键盘 之前自己的思路不完善,只想着将"VV"改成"VK",没有想到"KK"也可以改成"VK".导 ...
- 洛谷-P3741-honoka的键盘
honoka的键盘 - 洛谷 解题思路: 1.由题可得,给定一段字符串,然后查找里面VK相邻的情况,如果符合这个顺序,那么数量加1 2.条件是至多能改变1个字符,来增加VK的数量,分析情况,可知,已经 ...
最新文章
- python从零实习深度学习_月薪45K的深度程序员教你从零在Python中开发深度学习
- 脚手架koa2+mockjs
- lc171. Excel Sheet Column Number
- Python按行输出文件内容具体解释及延伸
- kotlin内联函数let、with、run、apply、also
- java数组拼字符串_java数组、字符串拼接
- autohotkey实例+懒人包_懒人福音——GitHub 热点速览 Vol.42
- STL14-set/multiset容器
- null对象访问static属性或方法
- tensorflow笔记2:TensorBoard
- TPC-C 中跑赢 Oracle 的 OceanBase,双 11 处理峰值达 6100 万次/秒!
- L2-014. 列车调度-PAT团体程序设计天梯赛GPLT
- 计算机毕业设计中民宿平台信息管理系统设计
- python def函数调用内容_基本的python,def函数和文本菜单的调用
- Oracle 提取汉子去除非汉子数据(保留标点符号)
- 电脑可以关机,不宜经常断电
- SQL语句:查询多表更新数据
- 代码比较工具DiffMerge的下载和使用
- 如何批量将 Word 文档转为 PDF 格式
- JavaScript全部替换 - js replaceAll()