• TZOJ:玛祖游戏


    描述

    玛祖是一款非常经典的游戏,游戏的角色是一只青蛙,青蛙每次可以吐出一颗珠子,如果将珠子吐到场景中相同颜色的珠子旁边(称为击中),当三个或者三个以上的同颜色珠子在一起的时候便可以消掉,如果消掉后还有相同颜色的珠子,则可以继续消除(我们称为连击)。

    YuYu也很喜欢这个游戏,而且希望连击次数越多越好,因此每次当她发现击中某种颜色的珠子能达到最大连击次数时,她总是等待该颜色出现!

    现在给定已经出现在游戏场景中的珠子队列,问瑜瑜可能达到的最大连击次数是多少?

    为了简化问题,我们的游戏规则是只要有两个颜色相同的珠子连在一起都可以消掉。

    输入

    输入数据有多组,每组占一行,每行一个由小写字母组成的字符串,长度不超过100000,表示游戏场景中的珠子队列,每个字母代表一种颜色。

    输出

    每组输出一个数字,表示最大的连击次数,该结果不会超过10000。

    样例输入

    样例输出

    题目来源

    台州学院“达内杯”第十届大学生程序设计竞赛

    菜鸡的成长史 ^-^

     

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int main()
     4 {
     5     ios::sync_with_stdio(false);
     6     list<char> lis;
     7     string s;char b[100005];
     8     while(cin>>s)
     9     {
    10         int len=s.size();
    11         for(int i=0;i<len;i++)
    12         {
    13             lis.push_back(s[i]);
    14         }
    15         lis.unique();
    16         list<char>::iterator it;int jishu=0;
    17         for(it=lis.begin();it!=lis.end();it++)
    18         {
    19             b[++jishu]=*it;
    20         }
    21         lis.clear();
    22         if(jishu==1)
    23             {cout << 1 << endl;continue;}   //特判
    24         int maxx=0;
    25         for(int i=2;i<=jishu;i++)
    26         {
    27             int sum=1;
    28             int j=i-1;
    29             int k=i+1;
    30             while(b[j]==b[k]&&j>=1&&k<=jishu)
    31             {
    32                 sum++;j--;k++;
    33             }
    34             maxx=max(sum,maxx);  //更新最大值
    35         }
    36         cout << maxx << endl;
    37     }
    38     return 0;
    39 }
    View Code

     

     

  • 相关阅读:
    Modbus RTU与Modbus TCP的区别
    《对比Excel,轻松学习Python数据分析》笔记
    字符串 批量删除
    地图服务在线资源
    Java环境变量配置及maven配置
    Android学习路线
    MySQL备份脚本,应该这么写
    Windows中mysql5.6升级5.7
    SQL Server数据分析面试题(202008)
    PYTHON-未知错误
  • 原文地址:https://www.cnblogs.com/qq-1585047819/p/10599216.html
Copyright © 2020-2023  润新知