1.第一个元素存入数组
2.第二个进入时与第一个比较,若小于第一个元素,存入数组的尾部。若大于第一个元素,则覆盖第一个元素(核心步骤:提高最长单调递减序列的上界,使更多的元素进入此序列)。
3.第三个元素,与第一个元素比较,若小于,与第二个元素比较,若小于,存入数组的尾部。若大于第一个或者第二个元素,则覆盖该元素。
4.重复以上步骤即可(递推思想)
#include<stdio.h>
int main(){
int s;
scanf("%d",&s);
while(s--)
{
int n,i,j,k=1,t,a[21];
scanf("%d",&n);
scanf("%d",&t);
a[0]=t;
for(i=1;i<n;i++)
{
scanf("%d",&t);
for(j=0;j<k;j++)
if(a[j]<=t)
{
a[j]=t;
break;
}
if(j==k)
a[k++]=t;
}
printf("%d\n",k);
}
return 0;
}