hdu 1051 Wooden Sticks

来源:互联网 发布:喵萝捏脸数据 百度云 编辑:程序博客网 时间:2024/05/25 23:24

这题要用贪心法,先对所有木棒的l或w进行排序并全部标记为0,然后从第一根木棒进行检索,找到符合 l<=l'  w<=w'的木棒并标记为1,检索完一遍以后又从第一个标记为0的木棒开始检索,直到全部标记为1。


#include <stdio.h>#include <stdlib.h>struct wood{    int l;    int w;    int flag;};struct wood a[5000+10];struct wood b[5000+10];int main(){   int t,m,n,i,j,temp,time,count,sum;   struct wood head;   scanf("%d",&t);   while(t--)   {       scanf("%d",&n);       for(i=0;i<n;i++)       {           scanf("%d %d",&a[i].l,&a[i].w);           a[i].flag=0;       }       for(i=0;i<n;i++)       {        for(j=i+1;j<n;j++)        {            if(a[i].l>a[j].l||(a[i].l==a[j].l&&a[i].w>a[j].w))            {             temp=a[i].l;             a[i].l=a[j].l;             a[j].l=temp;             temp=a[i].w;             a[i].w=a[j].w;             a[j].w=temp;            }        }       }        time=0;        head.l=a[0].l;        head.w=a[0].w;        a[0].flag=1;        sum=1;        do{           for(i=1;i<n;i++)           {            if(a[i].flag==0&&head.l<=a[i].l&&head.w<=a[i].w)            {a[i].flag=1;             head.l=a[i].l;             head.w=a[i].w;             sum++;}           }           time++;           for(i=0;i<n;i++)          {           if(a[i].flag==0)            {              head.l=a[i].l;              head.w=a[i].w;              break;            }          }         }while(sum!=n);         printf("%d\n",time);   }    return 0;}


原创粉丝点击