上题设
这道题看上去不难,我们很快就有一个思路就是设立一个数组,将地平线高度作为数组中的元素,再定义一个计数器count=0;当a[i]<a[i-1]&&a[i]<a[i+1]时,cout<<count;但是有一个问题,如题图中的区域3,出现了a[i]==a[i+1]的情况。我们推广一下,它实际是a[i]<a[i-1]&&a[i]>=a[i+1](即不断下坡)的一种特殊形式。所以当出现这个情况时,我们以i为起点遍历这个数组,当出现a[i]<a[i+1]时count++(即出现上坡,低洼结束),最后输出count。
代码如下:
#include<iostream>
using namespace std;
int main()
{
int n,a[1005]={0},count=0,i,j;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(i=2;i<n;i++)
{
if(a[i]<a[i-1]&&a[i]<a[i+1])
count++;
if(a[i]<a[i-1]&&a[i]>=a[i+1])
{
for(i;i<n;i++)
if(a[i]<a[i+1])
{
count++;
//cout<<"fuck"<<i<<endl;
break;
}
}
}
cout<<count;
return 0;
}