【算法题】排序子序列

来源:互联网 发布:遥感卫星数据 英文 编辑:程序博客网 时间:2024/05/21 11:24

题目如图:
这里写图片描述

递归查找拐点

#include<stdio.h>#include<vector>#include <algorithm>#include <iostream>#include <vector>using namespace std;long long find(const vector<int> & vec, size_t index){    int size = vec.size();    if (index < 0 || index >= size)        return 0;    else if (index > size - 2)        return 1;    if (vec[index + 1] == vec[index])    {        index++;        if (index > size - 2)        {            return 1;        }    }    if (vec[index + 1] > vec[index])        while (++index < size && vec[index] >= vec[index - 1]);    else        while (++index < size && vec[index] <= vec[index - 1]);    return 1 + find(vec, index);}int main(){    int n(0);    long long result(0);    cin >> n;    vector<int> seq;    seq.reserve(n);    size_t i(0);    for (i = 0; i < n; ++i)    {        int tmp;        cin >> tmp;        seq.push_back(tmp);    }    result = find(seq, 0);    cout << result << endl;    return 0;}