题解:P15629 [2019 KAIST RUN Spring] Rainbow Beads

· · 题解

思路

我们发现,紫色的珠子与任何颜色的珠子相邻都无法构成美丽的串珠。所以对于任何一段长度大于等于 2 的珠子,都必然没有紫色珠子。在判断时只有两种情况:

  1. 当前珠子是红色,下一枚珠子是蓝色。
  2. 当前珠子是蓝色,下一枚珠子是红色。

由于单独一颗珠子也是美丽的,所以在初始化答案是要设为 1

代码

#include<bits/stdc++.h>
using namespace std;
string s;
int ans;
int sum=1;
int n;
int main()
{
    cin>>n;
    cin>>s;
    if(s.size()==1)
    {
        cout<<1;
        return 0;
    }
    for (int i=0;i<s.size();i++)
    {
        if(s[i]=='R'&&s[i+1]=='B')
            sum++;
        else if(s[i]=='B'&&s[i+1]=='R')
            sum++;
        else
        {
            ans=max(ans,sum);
            sum=1;
        }
    }
    cout<<ans;
}