1116:最长平台

时间:2020-07-11
本文章向大家介绍1116:最长平台,主要包括1116:最长平台使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

原题

题目

题目描述

已知一个已经从小到大排序的数组,这个数组的一个平台(Plateau)就是连续的一串值相同的元素,并且这一串元素不能再延伸。例如,在1,2,2,3,3,3,4,5,5,61,2-2,3-3-3,4,5-5,6都是平台。试编写一个程序,接收一个数组,把这个数组最长的平台找出来。在上面的例子中3-3-3就是最长的平台。

输入格式

第一行有一个整数\(n\),为数组元素的个数。第二行有\(n\)个整数,整数之间以一个空格分开。

输出格式

输出最长平台的长度。

输入样例

10
1 2 2 3 3 3 4 5 5 6

输出样例

3

思路

就是一个最大平台长度的模板题。
Ps:最大平台长度有一个坑点:就是要特判
这道题目也有一点很坑:n的范围没给出!!!
害的我错了一次qnq

代码

#include<bits/stdc++.h>
using namespace std;
int s,ma;
int main()
{
    int n,a[1000002];//定义大一点
    cin>>n;//读入n
    for(register int i=1;i<=n;++i) cin>>a[i];//读入a数组
    for(register int i=1;i<=n;++i)
        if(a[i]==a[i-1]) s++;//如果这个数等于上一个数,则平台长度加1
        else//否则
        {
            ma=max(ma,s);//找最大值
            s=1;//新的平台
        }
    ma=max(ma,s);//特判
    /* 至于这里为什么要特判 */
    /* 因为如果最大值恰好在最后面 */
    /* 那么这个程序就会直接跳出循环,最大值错误 */
    /* 当然啦,如果把循环长度改成n+1,这一句就不用啦 */
    cout<<ma;//输出最大值
    return 0;
}

原文地址:https://www.cnblogs.com/wuzhenyu/p/13285155.html