題目
一組數,分別表示地平線的高度變化。高度值為整數,相鄰高度用直線連接。找出并統計有多少個可能積水的低洼地?
如圖:地高變化為?[0,1,0,2,1,2,0,0,2,0]。
輸入輸出格式
輸入格式
兩行,第一行n,?表示有n個數。第2行連續n個數表示地平線高度變化的數據,保證首尾為0。(3≤n≤10000,0≤?高度?≤1000)
輸出格式
一個數,可能積水低洼地的數目
輸入輸出樣例
輸入
10
0 1 0 2 1 2 0 0 2 0
輸出
3
代碼
#include<iostream>
using namespace std;
int main(){int n,a[10005],ans=0;//先將數組長度設置出來 cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}int flag;if(a[0]<=a[1]){flag=0;//上坡賦值為0 }for(int i=2;i<=n;i++){int change=flag;//change代表flag初始狀態 int pre=a[i-1];if(pre<a[i]){flag=0;}if(pre>a[i]){flag=1;//下坡賦值為1 }if(flag!=change){//前后狀態發生了改變,洼地數量加1,其實也就是有一次轉折,洼地數量加1 ans++;}}cout<<ans/2<<endl;//最終的洼地數量也就是計算出來的洼地數向下除以2,因為洼地數量是轉折點的向下除以2 return 0;
}