Step—1 命名
- 按照题目所说的命名;
int n,m[1000000+5],ans=1;
- 增加一个 flag 变量,来记录上升和下降;
bool falg;
Step—2 读入(这个应该不需要再讲了吧)…;
cin>>n;
for(int i=1;i<=n;i++)
cin>>h[i];
Step—3 判断第一次的 flag
的变化值;
if(h[2]>h[1])
flag=1;
Step—4 开干!!!
- 判断如果到头了,就
ans++,break
;
if(flag==0 && i==n)
{
ans++;
break;
}
- flag==1 时(注意,只有
h[i+1]<h[i]
时才判断);
ans++;
flag=0;
continue;
- flag==0 时(注意,只有
h[i+1]>h[i]
时才判断);
ans++;
flag=1;
continue;
Step—5 输出答案;
cout<<ans;
注意,在考试的时候别忘了加 return 0;
Code:
#include<bits/stdc++.h>
using namespace std;
int n,h[1000005],ans=1;bool flag;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>h[i];
if(h[2]>=h[1])
flag=1;
for(int i=1;i<=n;i++)
{
if(flag==0 && i==n)
{
ans++;
break;
}
if(flag==1)
if(h[i+1]<h[i])
{
ans++;
flag=0;
continue;
}
if(flag==0)
if(h[i+1]>h[i])
{
ans++;
flag=1;
continue;
}
}
cout<<ans;
return 0;
}