题目大意: 找出一个数列,使得数列呈现一个波动的趋势。
A:使得 g(2i) > g(2i-1),g(2i) > g(2i+1)
B:使得 g(2i) < g(2i-1), g(2i) < g(2i+1)
满足A或B任意一个条件即可。
思考: 手动模拟会发现
于是我们用一个变量表示正三角 一个变量表示逆三角就可以了 难度不大。。
#include <stdio.h> #include <algorithm> using namespace std; int last,now; int f1=1,f2=1,n; int main(){ scanf("%d",&n); scanf("%d",&now); for(int i=2;i<=n;++i){ last = now; scanf("%d",&now); if(now > last) f2 = max(f1+1,f2); if(now < last) f1 = max(f2+1,f1); } printf("%d\n",max(f1,f2)); return 0; }