运动会快到了,小码哥班里组织彩排,小码哥作为体委不得不担当同学排队列的大任。为了让男女分配均匀,小码哥想知道队列中男女生人数一样的子序列(连续的)最多多长。
样例
输入:
9
0 1 0 0 0 1 1 0 0
输出:
6
我的程序(输入样例得出的是2,求指点):
#include<stdio.h>
int main()
{
int a[100001]={0},b[100001]={0},num1=0,num2=0,n=0,i=0,j=0,k=0,t=0,l=0;
scanf("%d ",&n);
for(;i<n;i++)
{
scanf("%d ",&k);
a[i]=k;
}
//输入数据
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(a[j]==0)
t=t+1,num1++;
if(a[j]==1)
t=t-1,num2++;
if(t==0)
l=num1+num2;
}
b[i]=l;
}
//挨个找出符合条件的子列
l=b[0];
for(i=0;i<n;i++)
{
if(b[i]>l)
l=b[i];
}
//比较得出最长子列
printf("%d",l);
//输出
return 0;
}