nowcoder 鹏

 鹏
 
时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

    化而为鸟,其名为鹏。鹏之背,不知其几千里也。

                                        ——《庄子·逍遥游》

    HtBest的小鲲长大变成了大鹏,大鹏在天际翱翔,看到了一片绵延的山脉,每座山都有自己的高度,大鹏想穿过这片山脉。由于他只能紧贴地面飞行,他想知道他一共要翻越几次大山(上升->平飞->下降,算一次,其中平飞可以没有),初始时,大鹏在山脉的左端。

输入描述:

第一行一个正整数n,表示山脉被分为n段。
第二行有n个正整数a
i
两两之间用空格分开,a
i
表示山脉第i段的高度。

输出描述:

一行,包含一个正整数,表示大鹏需要翻越几次大山。
示例1

输入

复制
3
1 2 1 

输出

复制
1

说明

大鹏先上升一次,再下降一次,共翻越1次。
示例2

输入

复制
3
3 1 2

输出

复制
0

说明

大鹏先下降一次,再上升一次,共翻越0次。
示例3

输入

复制
3
1 2 3

输出

复制
0

说明

大鹏只需要上升一次,不需要下降,共翻越0次。

备注:

对于100%的测试数据:
1 ≤ n ≤ 1000000
1 ≤ a
≤ 1000000000
数据量较大,注意使用更快的输入输出方式。

C/C++:

 1 #include <map>
 2 #include <queue>
 3 #include <cmath>
 4 #include <vector>
 5 #include <string>
 6 #include <cstdio>
 7 #include <cstring>
 8 #include <climits>
 9 #include <iostream>
10 #include <algorithm>
11 #define INF 0x3f3f3f3f
12 using namespace std;
13 const int my_max = 1e6 + 10;
14 
15 int my_line[my_max], n, my_ans;
16 
17 
18 int main()
19 {
20     scanf("%d", &n);
21     for (int i = 0; i < n; ++ i)
22         scanf("%d", &my_line[i]);
23     -- n;
24     for (int i = 1; i < n; ++ i)
25         if (my_line[i] > my_line[i-1] && my_line[i] > my_line[i + 1])
26         {
27             my_ans ++;
28             i ++;
29         }
30     printf("%d\n", my_ans);
31     return 0;
32 }

猜你喜欢

转载自www.cnblogs.com/GetcharZp/p/9498323.html