1. 程式人生 > >201604-1折點計數——CCF計算機軟體能力認證試題歷屆真題

201604-1折點計數——CCF計算機軟體能力認證試題歷屆真題

一、原題

問題描述
試題編號: 201604-1
試題名稱: 折點計數
時間限制: 1.0s
記憶體限制: 256.0MB
問題描述: 問題描述   給定n個整數表示一個商店連續n天的銷售量。如果某天之前銷售量在增長,而後一天銷售量減少,則稱這一天為折點,反過來如果之前銷售量減少而後一天銷售量增長,也稱這一天為折點。其他的天都不是折點。如下圖中,第3天和第6天是折點。

  給定n個整數a1a2, …, an表示銷售量,請計算出這些天總共有多少個折點。
  為了減少歧義,我們給定的資料保證:在這n天中相鄰兩天的銷售量總是不同的,即ai-1ai。注意,如果兩天不相鄰,銷售量可能相同。 輸入格式   輸入的第一行包含一個整數n

  第二行包含n個整數,用空格分隔,分別表示a1a2, …, an。 輸出格式   輸出一個整數,表示折點出現的數量。 樣例輸入 7
5 4 1 2 3 6 4 樣例輸出 2 評測用例規模與約定   所有評測用例滿足:1 ≤ n ≤ 1000,每天的銷售量是不超過10000的非負整數。
二、分析

這是一道簽到題。13:22開始看題。第一次提交,結果一開始順手寫成cnt[i]++沒改回來;第二次提交錯誤是因為判斷條件錯了,我寫的(比前一天高,比後一天低)或者(比後一天高,比前一天低),事實上,應該是(比昨天和明天都高)或者(比昨天和明天都低)才是折點。


#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
int i,arr[1000];
for(i=0;i<n;i++){
cin>>arr[i];
}
int cnt=0;
for(i=1;i<n-1;i++){
if((arr[i]>arr[i-1]&&arr[i]>arr[i+1])||(arr[i]<arr[i-1]&&arr[i]<arr[i+1])){
cnt++;
}
}
cout<<cnt;
return 0;
}