山谷
时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描述
-
八百里伏牛山连绵不断,高低起伏。家住山脚下的小明开始学习识数了,面朝群山,他想数一下对面有多少山谷,请你写个程序帮他检验一下他数的结果是否正确。
- 输入
- 有多组测试数据。
对于每组数据:
第一行: N(2<N<10000)
第二行有N个正整数,分别代表山脉从左到右的高度Hi(0<Hi<1000)。
- 输出
- 输出每组数据中山谷的个数.
- 样例输入
-
3 2 1 2 5 2 1 1 1 2
- 样例输出
-
1 1
-
上传者
关键在于理解这道题,如果不理解肯定会wa.因为我就是一个例子 一直在探索题意是什么 错误了好多次。
题意:山谷,就是两边高中间低。
第一次wa理解的:6 5 4 3 5 5,六 个山谷6 5 4 3 5,6 5 4 3 5 5,5 4 3 5,5 4 3 5 5,4 3 5 ,4 3 5 5;
正确理解应该是 :6 5 4 3 5,一个
直接写两个特例吧:如果6 4 5 4 5 ,两个山谷6 4 5,5 4 5
如果6 4 3 4, 一个山谷。
代码:
#include <stdio.h> int main() { int n,mark,sum,a[10005]; while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) scanf("%d",&a[i]); sum=0; for(int i=0;i<n-1;i++) { if(a[i+1]<a[i]) { mark=a[i+1]; for(int j=i+2;j<n;j++) if(a[j]>mark) { sum++,i=j-1; break; } else mark=a[j]; } } printf("%d\n",sum); } return 0; }
时间: 2025-01-01 23:50:36