hdu2037的思考

hdu2037不是什么难题但是之前曾做过这道题,一直没想出什么思路就是导师贪心可以做出来,但是一直没有思路,然后今天寒假没事干,便有看到这道题其实发现自己有点思路了,然后便开始做,开始想,其实自己想出来了,但是不知道怎么用计算机语言如何让去表达,当然了,这之间为什么之前没想出来的原因,可能是自己刷的题太少了,自己的思维逻辑能力太差,包括自己对计算机语言不熟练,这都可能原因,考来这几个月刷题没有白费,不断提高自己的路基思维能力,还是很高兴的

但是自己逻辑思维想到了,但是自己的计算机语言不知道如何表达,因此便参考了别人的代码,主要是排序后不知道怎么说清楚,自己边整理了一下思路来做一总结,

1只要p[i] 的结束时间比temp的结束时间还早,那么就要抛弃原来temp,然后把p[i]作为temp,因为只有时间短,才能保证看的节目越多,题目要求看的节目多嘛,只有这样

2p[i]的结束时间小于等于temp开始时间,便可以加1,然后这时把p[i]时间定为temp的时间,来进行

就是依靠这个思路,来进行的,还有num初始化不是0,而是1,因为它本身就是一个

 1 #include <stdio.h>

 2 #include <stdlib.h>
 3 
 4 struct ma
 5 {
 6     int tis;
 7     int tie;
 8 }p[100];
 9 
10 int cmp(const void *a,const void *b)
11 {
12     struct ma *m=(struct ma *)a;
13     struct ma *n=(struct ma *)b;
14     if(m->tis != n->tis)
15     return m->tis-n->tis;
16     else
17     return m->tie-m->tie;
18 
19 }
20 int main()
21 {
22     int n,i,num;
23     struct ma temp;
24     while(scanf("%d",&n)&&n!=0)
25     {
26         for(i=0;i<n;i++)
27         scanf("%d %d",&p[i].tis,&p[i].tie);
28 
29         qsort(p,n,sizeof(p[0]),cmp);
30         temp.tis=p[0].tis;
31         temp.tie=p[0].tie;
32         num=1;
33         for(i=1;i<n;i++)
34         {
35             if(p[i].tie<temp.tie)
36             {
37                 temp.tis=p[i].tis;
38                 temp.tie=p[i].tie;
39             }
40             if(p[i].tis>=temp.tie)
41             {
42                 num++;
43                 temp.tis=p[i].tis;
44                 temp.tie=p[i].tie;
45             }
46         }
47         printf("%d\n",num);
48     }
49     return 0;

50 } 

 


 

posted on 2013-02-03 19:00  yelcoved  阅读(668)  评论(0)    收藏  举报