解题思路:这道题首先数据比较小其次也排除了相邻两天销售量一样的情况,难度就大打折扣。需要找的折点就相当于是数学问题中的极值点。这题容易进入误区用排序来做,但是仔细想想就好了。我们需要抓住的是折点,不难发现每个折点有一个共同特征。它的两边必须同时比它大(或小)
第一步输入数据:包含n然后用数组依次记录n个数。
第二步寻找折点:两个条件语句一个是它比它前一个小并且比它后一个小:另一个是它比它前一个大并且比它后一个大。找到折点需进行累加但是别忘记初始化。同时也需要注意循环的开始点和结束点,是从第二个数开始到n-1个数结束。
第三步输出数据:输出累加的数即可。
源码:
#include <bits/stdc++.h>//万能头文件
using namespace std;
int main()
{
int i,n,sum=0;//sum=0这里非常关键
cin>>n;
int a[10001]={0};//初始化
for(i=1;i<=n;i++)
{
cin >> a[i];
}
for(i=2;i<n;i++)//注意从2开始和结束点
{
if(a[i]>a[i-1]&&a[i]>a[i+1]){sum++;}//极大值点
if(a[i]<a[i-1]&&a[i]<a[i+1]){sum++;}//极小值点
}
cout<<sum;
return 0;
}
如有不理解的问题或者更好的思路,欢迎大家留言评论。
感谢浏览,谢谢支持。