您的位置:首页 > 其它

nyoj 755 山谷 【水题】

2015-08-30 20:58 375 查看

山谷

时间限制: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

上传者ACM_李如兵

思路:

这道题首先要理解山谷是什么?山谷就是左高右高中间是个坑就代表一个山谷,所以我们要找到具有这个特点的高度值,我们可以遍历所有的值,看看有没有一个数的右面的数小于这个数,右边的数的再右边的数小于等于右边的数,继续往后面找直到找到一个数大于它左边的数为止,为一个山谷,遍历所有的值,看看有多少个具有这个特点的一组数,

具体看代码:

代码:

#include <stdio.h>
#include <string.h>
int a[10005];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int cnt=0,flag=0;
for(int i=1;i<n;i++)//遍历所有的高度,来找能构成山谷的一组数
{
if(a[i]>a[i+1])
{
for(int k=i+2;k<=n;k++)
{
if(a[k-1]>=a[k])
{
continue;
}
else
{
i=k-1;
cnt++;
break;
}
}
}
}
printf("%d\n",cnt);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: