# 低洼地
## 题目描述
一组数,分别表示地平线的高度变化。高度值为整数,相邻高度用直线连接。找出并统计有多少个可能积水的低洼地?
如图:地高变化为 $[0,1,0,2,1,2,0,0,2,0]$。
## 输入格式
两行,第一行 $n,$ 表示有 $n$ 个数。第 $2$ 行连续 $n$ 个数表示地平线高度变化的数据,保证首尾为 $0$。$(3 \le n \le 10000,0 \le $ 高度 $ \le 1000)$。
## 输出格式
一个数,可能积水低洼地的数目。
## 样例 #1
### 样例输入 #1
```
10
0 1 0 2 1 2 0 0 2 0
```
### 样例输出 #1
```
3
```
代码展示
#include <stdio.h>
int count_water_traps(int heights[], int n) {
int traps = 0;
int i;
// 跳过开头的递减序列
for (i = 0; i < n - 1 && heights[i] >= heights[i + 1]; i++);
int start = i;
int is_decreasing = 0;
for (; i < n - 1; i++) {
if (heights[i] > heights[i + 1]) {
is_decreasing = 1;
} else if (heights[i] < heights[i + 1]) {
if (is_decreasing && i > start) {
traps++;
}
start = i;
is_decreasing = 0;
}
}
return traps;
}
int main() {
int n;
scanf("%d", &n);
int heights[10000]; // 根据题目约束,最大长度为10000
for (int i = 0; i < n; i++) {
scanf("%d", &heights[i]);
}
int result = count_water_traps(heights, n);
printf("%d\n", result);
return 0;
}