最长配对

2494 最长配对

 

小b有一个01序列,她想找到一个最长的区间使得这个区间的01能两两配对,即0的个数和1的个数相等。求最长区间的长度。

 

输入

第一行一个正整数n,表示数组长度,其中0<n≤50000;
第二行n个0或1,以空格隔开。

输出

输出一个数,表示最长区间的长度

输入样例

3
0 1 0

输出样例

2
思路:暴力就行了,适当减少判断

#include<IOstream>
using namespace std;
int n,x;
int a[50005];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>x;
        if(x==0)
        a[i]=a[i-1]-1;
        else
        a[i]=a[i-1]+1;
    }
    int ans=0;
    for(int i=n;i>=1;i--){
        for(int j=0;j<i;j++){
            if(ans>i-j)
            break;
            if(a[i]-a[j]==0)
            ans=i-j;
        }
    }
    cout<<ans<<endl;
    return 0;
} 

原文地址:https://www.cnblogs.com/yfr2zaz/p/10727620.html