題目分析:
該題是對一串數進行分析,找出其中導致數據大小趨勢變化的數,所以可以分爲鏈中情況,一種就是數據呈增大趨勢,但是有一個數減小而導致了數據變化趨勢變爲減小;一種就是數據呈減小趨勢但是有一個數增大而導致了數據變化趨勢變爲增大。所以除了判斷相鄰數據之間的關係(見博客:https://blog.csdn.net/AIMINdeCSDN/article/details/103356078),還要增加對數據趨勢變化的記錄,可以單獨設置一個變量其值爲0或爲1.
C語言源程序:
#include<stdio.h>
int main()
{
//設置記錄變化趨勢的標誌
int asc=0,desc=0;
int n,v,i,k;
int sum=0;
scanf("%d",&n);
//先讀入一個數,作爲初始比較的基值
scanf("%d",&k);
for(i=1;i<n;i++)
{
scanf("%d",&v);
if(v>k)
{
//作爲標誌點的條件之一既要比相鄰數大還要處於減小趨勢中
if(desc==1)
{
sum++;
desc=0;
}
asc=1;
}
else
{
//作爲標誌點的條件之二既要比相鄰數小還要處於增大趨勢中
if(asc==1)
{
sum++;
asc=0;
}
desc=1;
}
k=v;
}
printf("%d",sum);
return 0;
}
運行結果: