下标从1开始用啊(没RE很离谱)
然后把这儿
```cpp
for(int i=0;i<len;i++)
{
for(int j=i+1;j<len;j++)
{
int g=G[j]-G[i];
int r=R[j]-R[i];
if(g==r)
{
if(j-i>maxn)
{
maxn=j-i;
}
}
}
}
```
改成
```cpp
for(int i=1;i<=len;i++)
{
for(int j=i+1;j<=len;j++)
{
int g=G[j]-G[i-1];
int r=R[j]-R[i-1];
if(g==r)
{
if(j-i+1>maxn)
{
maxn=j-i+1;
}
}
}
}
```
再把最开始的循环改成从1~n就行了。
by fsdgakjl @ 2021-04-12 20:39:31
谢谢啦
$\color{#0AC666}{Thanks}$
by HgSO4_QwQ @ 2021-04-12 20:43:52
@[_wyy_](/user/115110)
50?
by HgSO4_QwQ @ 2021-04-12 20:47:20
```
#include<iostream>
using namespace std;
int R[1000000];
int G[1000000];
int main()
{
string s;
cin>>s;
int len=s.length();
for(int i=1;i<=len;i++)
{
if(s[i]=='R')
{
R[i]=R[i-1]+1;
G[i]=G[i-1];
}
else if(s[i]=='G')
{
G[i]=G[i-1]+1;
R[i]=R[i-1];
}
}
int maxn=0,ans=0;
for(int i=1;i<=len;i++)
{
for(int j=i+1;j<=len;j++)
{
int g=G[j]-G[i-1];
int r=R[j]-R[i-1];
if(g==r)
{
if(j-i+1>maxn)
{
maxn=j-i+1;
}
}
}
}
cout<<maxn;
return 0;
}
```
by HgSO4_QwQ @ 2021-04-12 20:47:49
这个字符串也要从一开始用
具体做法是:
在
```cpp
int len=s.length();
```
的后面写上:
```cpp
s='0'+s;
```
这样就是直接给字符串开头填充一个0帮助占位
这样原先的0~len-1位就变为1~len位
by fsdgakjl @ 2021-04-12 20:55:54
$\color{Green}{100}$ 了,谢谢 $!!$
by HgSO4_QwQ @ 2021-04-12 21:01:15
不客气![cy](https://cdn.luogu.com.cn/upload/pic/62225.png)
by fsdgakjl @ 2021-04-12 21:02:26
同谢!
by yangshiyu10 @ 2021-06-27 16:38:32