1 条题解
-
0
#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
- 上传者