zoukankan      html  css  js  c++  java
  • 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.
  • 相关阅读:
    Qt ini文件
    Qt我的文档 桌面路径
    windows zlib库编译步骤
    环形缓冲区
    openssl生成随机数
    怎样安装Scrapy
    CentOS7怎样安装GoAccess1.3
    Docker创建数据卷容器
    Docker创建数据卷
    Docker创建容器
  • 原文地址:https://www.cnblogs.com/qbwhtc/p/7389334.html
Copyright © 2011-2022 走看看