<==制作不易,求个赞QwQ
李计划来一场穿越瑞士山脉的自行车之旅。
他的旅途共包含 NN 个检查点,按照访问顺序编号为 1∼N1∼N。
第 ii 个检查点的高度为 HiHi。
一个检查点是山峰,如果满足:
- 它不是第 11 个或第 NN 个检查点。
- 它的高度严格大于紧接其之前的检查点和紧接其之后的检查点。
请帮李找出山峰的数量。
输入格式
第一行包含整数 TT,表示共有 TT 组测试数据。
对于每组数据,第一行包含整数 NN。
第二行包含 NN 个整数,其中第 ii 个表示 HiHi;
输出格式
每组数据输出一个结果,每个结果占一行。
结果表示为 Case #x: y
,其中 xx 为组别编号(从 11 开始),yy 为李的旅途中山峰的数量。
输入样例:
4 3 10 20 14 4 7 7 7 7 5 10 90 20 90 10 3 10 3 10
输出样例:
Case #1: 1 Case #2: 0 Case #3: 2 Case #4: 0
样例解释
示例 11,第二个检查点是山峰。
示例 22,没有检查点是山峰。
示例 33,第二个和第四个检查点是山峰。
示例 44,没有检查点是山峰。
算法1
考虑到后边要输出第几组,所以我们不能用while(t--),需要for(int k=1;k<=t;k++)
一个检查点是山峰,如果满足:
它不是第 1 个或第 N 个检查点。
它的高度严格大于紧接其之前的检查点和紧接其之后的检查点。
我们可以得出一下代码:
for(int i=2;i<=n-1;i++){
if(a[i-1]<a[i]&&a[i+1]<a[i])c++;
}
最后我们按格式输出 C 即可,记得每一轮下来要清零
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
for(int k=1;k<=t;k++){
int n,a[101],c=0;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=2;i<=n-1;i++){
if(a[i-1]<a[i]&&a[i+1]<a[i])
c++;
}
cout<<"Case #"<<k<<": "<<c<<'\n';
}
}