一句话题意:求最长的波动子序列。
其实可以当作一个结论记住,只要贪心地选就好了。注意判断相等情况,再用一个tmp记录一下上一次的大小关系,这样就十分简单了。
#include<bits/stdc++.h>
using namespace std;
int last,now,tmp;
int n,cnt;
int main()
{
scanf("%d",&n);
scanf("%d",&last);
for(int i=2;i<=n;i++)
{
scanf("%d",&now);
if(now-last)
if(tmp==0||(now<last&&tmp>0)||(now>last&&tmp<0))
cnt++,tmp=now-last;
last=now;
}
cout<<++cnt;
return 0;
}
D2两道题的代码长度都好短呀。