0
点赞
收藏
分享

微信扫一扫

nyoj 755 山谷 (水题)


  • 题目755
  • ​​题目信息​​
  • ​​运行结果​​
  • ​​本题排行​​
  • ​​讨论区​​

山谷



1000 ms  |  内存限制: 65535



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;
}



举报

相关推荐

0 条评论