链接:https://www.nowcoder.com/acm/contest/136/B
来源:牛客网
时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
化而为鸟,其名为鹏。鹏之背,不知其几千里也。
——《庄子·逍遥游》
HtBest的小鲲长大变成了大鹏,大鹏在天际翱翔,看到了一片绵延的山脉,每座山都有自己的高度,大鹏想穿过这片山脉。由于他只能紧贴地面飞行,他想知道他一共要翻越几次大山(上升->平飞->下降,算一次,其中平飞可以没有),初始时,大鹏在山脉的左端。
输入描述:
第一行一个正整数n,表示山脉被分为n段。 第二行有n个正整数ai两两之间用空格分开,ai表示山脉第i段的高度。
输出描述:
一行,包含一个正整数,表示大鹏需要翻越几次大山。
示例1
输入
3 1 2 1 3 3 1 2 3 1 2 3
输出
1 0 0
也是一个模拟题,我们设置一个 bool 类型的变量,当前输入的值比上一个大时就设置为 true ,当且仅当 fly=true 且当前输入值比上一个值小时,就变为 false ,此时可视为翻越一次。
#include <stdio.h>
int main() {
// freopen( "in.txt","r",stdin );
bool fly;
int n,s,e,cnt;
while( ~scanf( "%d",&n ) ) {
scanf( "%d",&s );
fly = false;
n--;
cnt = 0;
while( n-- ) {
scanf( "%d",&e );
if( s<e ) {
fly = true;
} else if( s>e && fly ) {
fly = !fly;
cnt++;
}
s = e;
}
printf( "%d\n",cnt );
}
}