zoukankan      html  css  js  c++  java
  • 子列的S值之和

    一个n元序列a[0],a[1],...a[n]的连续子列是a[i], a[i+1],...a[i+k],
    其中i>=0, i+k<=n.
    连续子列的S值=max(a[i],a[i+1],...a[i+k])-min(a[i],a[i+1],...a[i+k]) .
    要求所有子列的S值之和。

     1 #include<iostream>
     2 #include<algorithm>
     3 using namespace std;
     4 int main()
     5 {
     6     int n;
     7     cin>>n;
     8     int a[n+1];
     9     for(int i=0; i<n; i++)
    10     {    
    11         cin>>a[i];
    12     }
    13     long m,s=0;
    14     for(int i=0; i<n+1; i++)      //这里是i<n+1(以及下面的j<n+1),需要注意下..
    15     {
    16         for(int j=i; j<n+1; j++)
    17         {
    18             m=*max_element(a+i,a+j)-*min_element(a+i,a+j);     
    19             s+=m;            
    20         }
    21     }     
    22     cout<<s<<endl;
    23     return 0;
    24 }

    max_element和min_element的使用:

    emplate <class ForwardIterator>
      ForwardIterator max_element ( ForwardIterator first, ForwardIterator last );

    其中,,
    ForwardIterator first是第一个元素的迭代器
    ForwardIterator last是所选子数组中最后一个元素的下一个元素的迭代器;
  • 相关阅读:
    软件测试学习随笔(1) 引言
    集成测试
    SPM-using Maven and Juint
    验收测试
    白盒测试学习
    编码的UI测试
    测试闰年
    黑盒测试续
    黑盒测试方法-等价类划分
    对软件测试的理解
  • 原文地址:https://www.cnblogs.com/fengyanlover/p/4943139.html
Copyright © 2011-2022 走看看