交错序列

来源:互联网 发布:淘宝网韩都衣舍商城 编辑:程序博客网 时间:2024/04/30 16:29

题目描述

我们定义一个由数字 0 和 1 组成的序列是交错序列,当且仅当在这个序列中 0 和 1 是轮流出现的,比如 0,010,10101都是交错序列。

现在给出了一个由数字 0 和 1 组成的序列A,它可能不是一个交错序列,但是你可以从这个序列中选择一些数字出来,按他们在序列A中原有的相对顺序排列(即选取A的一个子序列),使得最后你得到的是一个交错序列。问这样能得到的交错序列的最长长度是多少?


输入

第一行包含一个整数n,表示输入序列的长度。1 <= n <= 10^5

第二行包含n个 0 或 1,表示对应的序列。

输出

输出能够得到的最长交错序列的长度。


样例输入

Input Sample 1:

4

0 1 0 1

Input Sample 2:

6

1 1 1 0 0 0


样例输出


Output Sample 1:

4

Output Sample 2:

2


分析

从第一个数开始,将后面的一个数和之前的进行比较,如果不一样,那么计数器加1,否则,计数器不做任何操作。然后遍历下一个数字,重复上述操作,直到实现对所有数字的遍历。


代码

#include<stdio.h> 
int main()
{
    int i;
    int n;
    scanf("%d", &n);
    int input[n];
    for (i = 0; i < n; i ++)
    {
        scanf("%d", &input[i]);
    }
    
    int num = 1;
    for (i = 1; i < n; i++)
    {
        if(input[i] != input[i-1])
        {
            num++;
        }
    }
    printf("%d ", num);
    return 0;
}