最长上升子序列

来源:互联网 发布:java中getField 编辑:程序博客网 时间:2024/06/13 12:41

刚刚打的东西不知为什么都没了
只好再来一遍了
一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1 <= i1 < i2 < … < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8).

#include<stdio.h>#define N 100int a[N];int main()   {    int n;    scanf("%d",&n);    int b[N];    int t=n,i,j,k,l;    while(t--)    {            scanf("%d",&a[n-t-1]);            b[t]=1;    }    for(i=0;i<n;i++)    {            k=1;            for(j=0;j<i;j++)            {                   if(a[j]<a[i]&&b[j]>=k)                   {                           k=b[j];                           b[i]=b[j]+1;                   }            }    }    l=0;    for(i=0;i<n;i++)    {        if(b[i]>l)                    {l=b[i];        k=i;}    }    printf("%d",l);    return 0;

}

0 0
原创粉丝点击