• 项链 (爱思创算法四)(期中测试)(答案记录)


    前言:

    这篇文章还是是为了帮助一些

    像我这样的菜鸟

    找到简单的题解

    题目描述

    有一种项链,由红宝石和蓝宝石组成。

    仅当红宝石和蓝宝石数目相同的时候,项链才最稳定,不易断链。

    小爱想知道从给定的项链中,

    可以截取一段最长的稳定的子串,

    有多少颗宝石组成。

    红宝石用‘R’表示,

    蓝宝石用‘B’表示。

    输入描述

    一行由R和B组成的字符串。

    输出描述

    最长的稳定的子串由多少颗宝石组成。

    输入样例#1

    BRBBRB
    

    输出样例#1

    4
    

    提示

    数据范围:

    宝石数<=1000

    本题线下文件测评时的说明:

    - 可执行文件名:stone

    - 提交源程序文件名:stone.cpp

    - 输入文件名:stone.in

    - 输出文件名:stone.out

    - 时间限制:1秒

    - 空间限制:256MB

    完整代码:

    1. #include
    2. using namespace std;
    3. typedef long long ll;
    4. const ll maxn = 1005;
    5. ll maxs = INT_MIN;
    6. string s;
    7. ll r[maxn],b[maxn];
    8. int main ()
    9. {
    10. //freopen ("stone.in","r",stdin);
    11. //freopen ("stone.out","w",stdout);
    12. cin >> s;
    13. for (ll i = 0; i < s.size(); i++)
    14. {
    15. if (s[i] == 'R') {
    16. r[i + 1] = r[i] + 1;
    17. b[i + 1] = b[i];
    18. }
    19. else if (s[i] == 'B')
    20. {
    21. b[i + 1] = b[i] + 1;
    22. r[i + 1] = r[i];
    23. }
    24. }
    25. for (ll i = 1; i <= s.size(); i++)
    26. {
    27. for (ll j = i + 1; j <= s.size(); j++)
    28. {
    29. if (r[j] - r[i - 1] == b[j] - b[i - 1])
    30. {
    31. maxs = max (r[j] - r[i - 1] + b[j] - b[i - 1], maxs);
    32. }
    33. }
    34. }
    35. cout << maxs << endl;
    36. return 0;
    37. }

    AC

  • 相关阅读:
    (c语言)二维数组求最大值
    怎么样恢复移动硬盘格式化的数据呢?
    JS-(14)表单验证
    GBASE 8C——SQL参考6 sql语法(6)
    RabbitMQ入门与进阶实战
    C#学生信息管理系统,数据库sqlserver
    Linux的几个常用基本指令
    Matlab:绘制日期时间
    网络编程:使用UDP协议实现服务器与客户端的交互
    前端blob数据
  • 原文地址:https://blog.csdn.net/HackerQY/article/details/127817770