Luogu P3741 honoka的键盘

题目背景

honoka 有一个只有两个键的键盘。

题目描述

一天,她打出了一个只有这两个字符的字符串。当这个字符串里含有"VK"这个字符串的时候,honoka 就特别喜欢这个字符串。所以,她想改变至多一个字符(或者不做任何改变)来最大化这个字符串内"VK"出现的次数。给出原来的字符串,请计算她最多能使这个字符串内出现多少次"VK"。(只有当"V"和"K"正好相邻时,我们认为出现了"VK"。)

输入输出格式

输入格式:

第一行给出一个数字 n,代表字符串的长度。第二行给出一个字符串 s。

输出格式:

第一行输出一个整数代表所求答案。

输入输出样例

输入样例#1:

2
VK

输出样例#1:

1

输入样例#2:

2
VV

输出样例#2:

1

输入样例#3:

1
V

输出样例#3:

0

输入样例#4:

20
VKKKKKKKKKVVVVVVVVVK

输出样例#4:

3

输入样例#5:

4
KVKV

输出样例#5:

1

说明

对于 100%的数据,1<=n<=100 。

Solution

可以说是水题吧……(但要细心)

大概思路:

  1. 先判断字符串里VK的个数,再手动操作让判断的那部分语句忽视已计算过的“VK”。

举个栗子:字符串“VVKK”,先计算已有的VK,然后在VK间加个空格(其实什么都行),字符串就会变成“VV KK”,pos语句就会完美忽略VK。接下来,在VK前后各加一个空格,以防在后面改变一个字符时收到干扰(字符串变为"V V K K")。

  1. 改变字符时,只要判断字符串里是否有"VV"或“KK”就行了("VV"可以把第二个“V”改成”K“,“KK”可以把第一个“K”改成“V”),有即计数+1。

——————分割不完全的分割线——————

pascal程序如下:

var n,m:longint;
s:string;
begin
  readln(n);//n好像并没有什么卵用
  readln(s);
  while pos('VK',s)<>0 do//判断是否有现成的VK
  begin
    inc(m);//计数器+1
    insert(' ',s,pos('VK',s));//VK左边增加空格
    insert(' ',s,pos('VK',s)+2);//VK右边增加空格
    insert(' ',s,pos('VK',s)+1);//VK中间增加空格
  end;
  if (pos('VV',s)<>0)or(pos('KK',s)<>0) then//判断字符串是否有“VV”或“KK”
  writeln(m+1)
  else
  writeln(m);
end.

转载于:https://www.cnblogs.com/qbwhtc/p/7389334.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值