1 条题解

  • 0
    @ 2026-1-27 19:02:33
    #include<bits/stdc++.h>
    using namespace std;
    
    int arr[100];            // [1] arr数组-存储输入的整数序列
    
    int main(){
        int n;               // [2] n-输入的序列长度(2 ≤ N ≤ 10)
        cin>>n;              // [3] 读取序列长度n
        for(int i=0;i<n;i++) cin>>arr[i];  // [4] 读取n个整数存入arr数组(下标从0开始)
        
        int sum=0;           // [5] sum-统计“转折元素”的数量(局部最大值或局部最小值)
        // 遍历所有可能的中间元素(排除第一个和最后一个,因为无法比较左右)
        for(int i=1;i<n-1;i++){
            // 判断当前元素是否是转折元素:
            // 条件1:比左边大且比右边大 → 局部最大值
            // 条件2:比左边小且比右边小 → 局部最小值
            if((arr[i]>arr[i-1] && arr[i]>arr[i+1]) || (arr[i]<arr[i-1] && arr[i]<arr[i+1])){
                sum++;       // [6] 如果是转折元素,计数器加1
            }
        }
        // 子序列的个数 = 转折元素的数量 + 1(每个转折元素会将序列分割成多一段)
        cout<<sum+1;         // [7] 输出子序列的总数
        return 0;                  
    }
    
    • 1

    信息

    ID
    1187
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    1
    已通过
    1
    上传者