关于这道题,我只想说,看似难懂的题几乎都是简单,所以一定要耐着性子去看题,特别对于新手,这正是锻炼自己分析题的机会!呵呵
#include<iostream>
using namespace std;
typedef struct fun
{
int x,y,len;
}rr;
fun a[10005];
int cmp(const void *a,const void *b)
{
fun *c=(fun *)a;
fun *d=(fun *)b;
if(c->x==d->x)
return d->y-c->y;
else
return d->x-c->x;
}
int main()
{
int n,i,j;
while(1)
{
cin>>n;
if(n==0)
{
cout<<"*"<<endl;
break;
}
for(i=0; i<n; i++)
{
cin>>a[i].x>>a[i].y;
a[i].len=1;
}
qsort(a,n,sizeof(fun),cmp);//降序排列的
for(i=1; i<n; i++)
{
for(j=0; j<i; j++)
if(a[i].x<=a[j].x && a[i].y<=a[j].y)
if(a[j].len+1>a[i].len)
a[i].len=a[j].len+1;
}
int max=0;
for(i=0; i<n; i++)
if(a[i].len>max)
max=a[i].len;
cout<<max<<endl;
}
return 0;
}