这篇文章还是是为了帮助一些
像我这样的菜鸟
找到简单的题解
有一种项链,由红宝石和蓝宝石组成。
仅当红宝石和蓝宝石数目相同的时候,项链才最稳定,不易断链。
小爱想知道从给定的项链中,
可以截取一段最长的稳定的子串,
有多少颗宝石组成。
红宝石用‘R’表示,
蓝宝石用‘B’表示。
一行由R和B组成的字符串。
最长的稳定的子串由多少颗宝石组成。
BRBBRB
4
数据范围:
宝石数<=1000
本题线下文件测评时的说明:
- 可执行文件名:stone
- 提交源程序文件名:stone.cpp
- 输入文件名:stone.in
- 输出文件名:stone.out
- 时间限制:1秒
- 空间限制:256MB
- #include
- using namespace std;
- typedef long long ll;
- const ll maxn = 1005;
- ll maxs = INT_MIN;
- string s;
- ll r[maxn],b[maxn];
- int main ()
- {
- //freopen ("stone.in","r",stdin);
- //freopen ("stone.out","w",stdout);
- cin >> s;
- for (ll i = 0; i < s.size(); i++)
- {
- if (s[i] == 'R') {
- r[i + 1] = r[i] + 1;
- b[i + 1] = b[i];
- }
- else if (s[i] == 'B')
- {
- b[i + 1] = b[i] + 1;
- r[i + 1] = r[i];
- }
- }
- for (ll i = 1; i <= s.size(); i++)
- {
- for (ll j = i + 1; j <= s.size(); j++)
- {
- if (r[j] - r[i - 1] == b[j] - b[i - 1])
- {
- maxs = max (r[j] - r[i - 1] + b[j] - b[i - 1], maxs);
- }
- }
- }
- cout << maxs << endl;
- return 0;
- }