求最长上升子序列 长度

#include<bits/stdc++.h>
int b[100];
int amaxlen[100];
int main()
{
    int i,j,n;
    scanf("%d",&n);
    amaxlen[1]=1;
    for(i=1;i<=n;++i)
    {
        scanf("%d",&b[i]);
    }
    for(i=2;i<=n;++i)
    {//求以第i个数为终点的最长上升子序列的长度
      int ntmp=0;//记录第i的数左边子序列最大长度
      for(j=1;j<i;++j)//搜索以第i个数为终点的最长上升子序列长度
       if(b[i]>b[j])
      {//
         if(ntmp<amaxlen[j])
            ntmp=amaxlen[j];
      }
       amaxlen[i]=ntmp+1;
    }
     int t=0;
     for(i=1;i<=n;++i)
        t=std::max(amaxlen[i],t);
      printf("%d\n",t);
      return 0;
}

猜你喜欢

转载自blog.csdn.net/sunpeishuai/article/details/79721078