单峰数组c++捏-创新互联

题目在这里捏:

创新互联建站:成立与2013年为各行业开拓出企业自己的“网站建设”服务,为数千家公司企业提供了专业的成都网站建设、做网站、网页设计和网站推广服务, 按需网站制作由设计师亲自精心设计,设计的效果完全按照客户的要求,并适当的提出合理的建议,拥有的视觉效果,策划师分析客户的同行竞争对手,根据客户的实际情况给出合理的网站构架,制作客户同行业具有领先地位的。

整数数组如果是单峰的,满足:

·第一部分一开始就在严格增加

·第二部分此后它是恒定的

·此后第三部分,它将严格降低

第一个部分(增加)和最后一部分(减少)可能不存在。允许这两部分不存在。

例如,以下三个数组是单峰的:[5,7,11,11,2,1],[4,4,2],[7],但以下三个数组不是单峰的:[5,5,6,6,1],[1,2,1,2],[4,5,5,6]。

编写一个程序,检查数组是否是单峰的。


测试数据

样例输入1:

6

1 5 5 5 4 2

样例输出1:

YES

样例输入2:

5

10 20 30 20 10

样例输出2:

YES

样例输入3:

4

1 2 1 2

样例输出3:

NO

样例输入4:

7

3 3 3 3 3 3 3

样例输出4:

YES

样例输入5:

6

5 5 5 4 4 4

样例输出4:

NO

浅浅分析一下哈

根据题目可知单峰数组可分为

(1).标准的先增加在稳定后减小

(2).没有前面的严格增加,直接减小

可以先从前往后找到一个大值l,再从后往前找到一个大值r,以此来将数组分为1~l,l~r,r~n三段,再对三段逐一核验是否复=符合对应的条件即可啦~~~

#include//单峰数组
using namespace std;//先增后减
int main(){
    int i,j,n,a[1001],l,r;
    cin>>n;
    for(i=1;i<=n;i++) cin>>a[i];
    int max1=-1e9;
    for(i=1;i<=n;i++){
        if(a[i]>max1){
            max1=a[i];
            l=i;//寻找到左边的大值边界
        }
    }
    int max2=-1e9;
    for(i=n;i>=1;i--){
        if(a[i]>max2){
            max2=a[i];
            r=i;//右边大值的边界
        }
    }
   // cout<=a[i+1])
        f1=0;
        break;
    }
     for(i=l;i

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站名称:单峰数组c++捏-创新互联
链接分享:http://azwzsj.com/article/ijepc.html