SDUT 4349 补番计划

版权声明:iQXQZX https://blog.csdn.net/Cherishlife_/article/details/85257602

补番计划

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

    由于十月新番更新实在太慢,JH只好开始了自己的补番计划。
JH将自己的想要补得番剧编号按照从小到大得顺序排好记录在便签上(已知番剧编号最小是1,最大是1000)。
    现在你想要捉弄一下他,于是准备抹去其中连续的几个编号,但你又不希望激怒JH,于是希望修改后的补番计划能够唯一的被还原。(详情见下方提示)
    现在你想知道在满足上述条件下最多能抹掉几个编号。

Input

多组输入,到文件结束为止,
每组数据第一行输入一个的整数 n 代表补番计划里的番剧数量( 1 <= n <= 100),
第二行由空格分隔 n 个正整数代表补番计划中的编号  ai  ( 1 ≤ a1 < a2 < ⋯ < an ≤ 1000 ) 。

Output

输出满足题意的最长删除长度。

Sample Input

6
1 3 4 5 6 9

Sample Output

2

Hint

对于样例
可以删除4,5 删除后变成1 3 - - 6 9
3到6之间只有4,5两个数,因此还原是唯一的。
对于数据
5
1 2 3 4 5
答案应该是4,因为可以删除1, 2, 3, 4使得序列变成- - - - 5, 由于编号最小为1,所以还原的方式也是唯一的。

Source

行走的二叉树

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    int a[111];
    while (cin >> n)
    {
        memset(a, 0, sizeof(a));
        for (int i = 0; i < n; i++)
            cin >> a[i];

        int ans = 0, cnt = 0;
        if (a[0] == 1 && a[1] == 2)
        {
            for (int i = 0; i < n; i++)
            {
                if (a[i] + 1 == a[i + 1])
                    cnt++;
                else
                    break;
            }
            ans = max(ans, cnt);
        }
        for (int i = 0; i < n - 1;)
        {
            int j, t = a[i];
            cnt = 0;
            for (j = i + 1; j < n; j++)
            {
                if (t + 1 == a[j])
                {
                    cnt++;
                    t = a[j];
                }
                else
                {
                    break;
                }
            }
            i = j;
            ans = max(ans, cnt - 1);
        }
        if (a[n - 1] == 1000 && a[n - 2] == 999)
        {
            cnt = 1;
            for (int i = n - 2; i >= 0; i--)
            {
                if (a[i] - 1 == a[i - 1])
                {
                    cnt++;
                }
                else
                    break;
            }
            ans = max(ans, cnt);
        }
        cout << ans << endl;
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/Cherishlife_/article/details/85257602