201604-1折點計數——CCF計算機軟體能力認證試題歷屆真題
阿新 • • 發佈:2019-02-12
一、原題
問題描述試題編號: | 201604-1 |
試題名稱: | 折點計數 |
時間限制: | 1.0s |
記憶體限制: | 256.0MB |
問題描述: |
問題描述
給定n個整數表示一個商店連續n天的銷售量。如果某天之前銷售量在增長,而後一天銷售量減少,則稱這一天為折點,反過來如果之前銷售量減少而後一天銷售量增長,也稱這一天為折點。其他的天都不是折點。如下圖中,第3天和第6天是折點。 給定n個整數a1, a2, …, an表示銷售量,請計算出這些天總共有多少個折點。 為了減少歧義,我們給定的資料保證:在這n天中相鄰兩天的銷售量總是不同的,即ai-1≠ai。注意,如果兩天不相鄰,銷售量可能相同。 輸入格式 輸入的第一行包含一個整數n 第二行包含n個整數,用空格分隔,分別表示a1, a2, …, 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; }