BitComet 旗下网站

转到日志
相关贴吧:
acm of zju

zju2136 最长子序列长度

楼主 发表于:2008-08-05 15:08:28 [回复]

/*Longest Ordered Subsequence
2008-08-05 01:47:41 Accepted 2136 C++ 00:00.01 844K 天将降大任于我
将序列中的数字从大到小标记,最大的没标,从第二大开始(被标过的且a[i][1]的值
符合递减顺序的即为子序列的元素),到最小的那个即为最长子序列的个数-1,故最后需+1
*/
#include<iostream>
using namespace std;
const int N=1000;
int a[N+1][2];
int main()
{
 int n,k,i,j,t,Max;
 scanf("%d",&k);
 for(t=1;t<=k;t++)
 {
   scanf("%d",&n);
   for(i=0;i<n;i++)
   {
  scanf("%d",&a[i][0]);
  a[i][1]=0;
   }
     for(i=n-2;i>=0;i--)
  {   Max=-1;
   for(j=i+1;j<n;j++) 
   {
    if(a[j][0]>a[i][0]&&a[j][1]+1>Max) 
    {
     Max=a[j][1]+1;  a[i][1]=a[j][1]+1;
    }
   }
  }
  Max=-1;
  for(i=0;i<n;i++)
   if(a[i][1]>Max) Max=a[i][1];
   printf("%d\n",Max+1);
     if(t<k) printf("\n");
    }
 return 0;
}

心难泰,世风坏,旧时正气今何在?正义寡,人情薄,闻道虽多,茅塞不开。怪!怪!怪! 空等待,几多载,冲出重围人心快!暴雨打,狂风袭,任他折磨,此志难改。耐!耐!耐!

 

您现在还没有登录,请在登录后发贴