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 }
转载于:https://www.cnblogs.com/yelcoved/archive/2013/02/03/2891064.html
