动态规划 day14 B题

来源:互联网 发布:最专业的网络推广价格 编辑:程序博客网 时间:2024/04/28 10:12
#include<iostream>
using namespace std;
#define  MAX 20000
int zhuichang(int seq[MAX],int N);


int t,n;
int a[MAX];
int main()
{
    cin>>t;
    while(t--)
    {
        cin>>n;
        for(int i=1; i<=n; i++)
            cin>>a[i];
        int positive[n],negative[n];
        int temp;
        int j=1;
        int k=1;
        for(int i=1; i<=n; i++)
        {
            temp=a[i]-i;
            if(temp>=0)
            {
                positive[j]=temp;
                j++;
            }
            if(temp<=0)
            {
                negative[j]=temp;
                k++;
            }
        }
        cout<<max(zhuichang(positive,j),zhuichang(negative,k))<<endl;
    }
    return 0;
}
int zhuichang(int seq[MAX],int N)
{
    int i,j,max,maxlen=1;
    int seqlen[MAX+10];
    for(i=1; i<=9; i++)
        seqlen[i]=1;
    for (i=2; i<=N; i++)
    {
        max=0;
        for (j=1; j<=i-1; j++)
        {
            if(seq[j]<seq[i]&&seqlen[j]>max)
                max=seqlen[j];
        }
        seqlen[i]=max+1;
        if(seqlen[i]>maxlen)
            maxlen=seqlen[i];
    }
    return maxlen;
}
阅读全文
0 0
原创粉丝点击