题目大意是求一个最长的抖动的子序列
题解中有一个大神写下了这样的代码:
#include<cstdio> int n,a=1,b=1,x,y; int mmax(int a,int b) { if(a>b) return a; else return b; } main() { scanf("%d%d",&n,&y); for(int i=2;i<=n;i++) { scanf("%d",&x); if(x>y) a=mmax(a,b+1); if(x<y) b=mmax(b,a+1); y=x; } printf("%d",mmax(a,b)); }
a、b分别表示当前最长的末尾是上升的、下降的子序列的长度,根据每次当前节点x和上一个y的关系更新a、b
好聪明...
感觉我经常把题想难...