#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
int x,y;
}DATA;
DATA a[1010];
int f[1010];
int camp(DATA a[],int n)
{
int i,j,max;
for(i=n; i>=0; i--)
{
f[i]=1;
for(j=i+1; j<n; j++)//其实很上升子序列一样的
{
if( ( (a[i].x<a[j].x&&a[i].y<a[j].y)||(a[i].x<a[j].y&&a[i].y<a[j].x) )&&f[j]+1>=f[i] )
f[i]=f[j]+1;
}
}
max=0;
for(i=0; i<n; i++)
{
if(f[i]>=max)max=f[i];
}
return max;
}
int main()
{
int T,n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=0; i<n; i++)
scanf("%d %d",&a[i].x,&a[i].y);
printf("%d",camp(a,n));
if(T)printf("\n");
}
system("pause");
return 0;
}
点击打开链接