最长配对
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; }