首页 > 代码库 > hdu 1051 Wooden Sticks

hdu 1051 Wooden Sticks

简单贪心。

将所给数据从小到大进行排序,将所给零件的两数据均小于另一个零件的两数据,看做一个集合。

最后输出集合个数。

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<algorithm>

using namespace std;

struct www
{
    int x,y;
}s[5005];

int yy[5005],a,b;
bool cmp(www q,www u)
{
    if(q.x==u.x)
        return q.y<u.y;
    else
        return q.x<u.x;
}

void show(int o)
{
    int j,d,e;
	d=s[o].x;
	e=s[o].y;
    for(j=o+1;j<b;j++)
    {
        if(!yy[j])
        {
            if(d<=s[j].x&&e<=s[j].y)
            {
                yy[j]=1;
                d=s[j].x;
				e=s[j].y;
            }
        }
    }
}

int main()
{
    int c,i,sum;
    scanf("%d",&a);
    while(a--)
    {
        scanf("%d",&b);
        sum=0;
        memset(yy,0,sizeof(yy));
        for(i=0;i<b;i++)
        {
            scanf("%d %d",&s[i].x,&s[i].y);
        }
        sort(s,s+b,cmp);
        for(i=0;i<b;i++)
        {
            if(yy[i]==0)
            {yy[i]=1;
            show(i);
            sum++;}
        }
        printf("%d\n",sum);
    }
    return 0;
}