1.问题遇到的现象和发生背景
男女排队
运动会快到了,小马哥在班里组织彩排,作为体委不得不担当同学排队列的大任。
为了让男女分配均匀,小马哥想知道队列中男女生人数一样的子系列(连续的)最多多长?
3.我想要达到的结果
输入:9
0 1 0 0 0 1 1 0 0
输出:6
#include<stdio.h>
#define MAX 100005
int main(void)
{
int n,i,j;
int a[MAX],vis[2*MAX],s[2*MAX];
int ans=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(!a[i])
{
a[i]=-1;
}
s[i]=s[i-1]+a[i];
}
for(i=1;i<=n;i++)
{
for(j=0;j<i;j++)
{
if(s[i] == s[j])
{
if(i-j> ans)
{
ans=i-j;
}
break;//注意此步
}
}
}
printf("%d\n",ans);
return 0;
}