ahu-497-最长起伏子序列

来源:互联网 发布:五子棋c语言源代码 编辑:程序博客网 时间:2024/04/27 13:08

最长递增序列的变形dp,我又开始水了。。。。

#include<cstdio>#include<cmath>#include<cstring>#include<cstdlib>#include<stack>#include<set>#include<queue>#include<map>#include<iostream>#include<algorithm>using namespace std;int a[6000],b[6000];int main(){  int i,j,k,n;  while(scanf("%d",&n))  {    if(n==0)break;    for(i=1;i<=n;i++)scanf("%d",&a[i]);    int l1=1;    b[1]=a[1];    for(i=2;i<=n;i++)    {      if(l1%2!=0)      {        if(a[i]>b[l1]){l1++;b[l1]=a[i];}        else        if(a[i]<b[l1]){b[l1]=a[i];}      }      else      {        if(a[i]<b[l1]){l1++;b[l1]=a[i];}        else        if(a[i]>b[l1]){b[l1]=a[i];}      }    }    int l2=1;    b[1]=a[1];    for(i=2;i<=n;i++)    {      if(l2%2==0)      {        if(a[i]>b[l2]){l2++;b[l2]=a[i];}        else        if(a[i]<b[l2]){b[l2]=a[i];}      }      else      {        if(a[i]<b[l2]){l2++;b[l2]=a[i];}        else        if(a[i]>b[l2]){b[l2]=a[i];}      }    }    printf("%d\n",max(l1,l2));  }  return 0; }
0 0