首页 > 其他 > 详细

51nod 2494 最长配对

时间:2019-05-19 22:21:11      阅读:83      评论:0      收藏:0      [点我收藏+]

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

 

输入

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

输出

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

输入样例

3
0 1 0

输出样例

2

枚举
代码:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;
int n;
int s[50000];
int main() {
    scanf("%d",&n);
    int c = 0,m = 0;
    for(int i = 0;i < n;i ++) {
        scanf("%d",&s[i]);
        c += (s[i] == 0) ? -1 : 1;
        int cc = c;
        for(int j = 0;j < i;j ++) {
            if(cc == 0) {
                m = max(m,i + 1 - j);
                break;
            }
            cc -= (s[j] == 0) ? -1 : 1;
        }
    }
    printf("%d",m);
    return 0;
}

 

51nod 2494 最长配对

原文:https://www.cnblogs.com/8023spz/p/10890938.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!