简单的贪心题:只需要将结束时间利用进行排序后,在未安排的活动中挑选结束时间最早的活动安排,
好给后面的活动安排留出更多的空间,从而达到安排最多活动的目标。 加上一个判断条件就可以搞定了

代码:

View Code
 1 #include<iostream>
 2 #include <stdlib.h>
 3 using namespace std;
 4 struct timee
 5 {
 6     int st;
 7     int ed;
 8 }t[102];
 9 int cmp (const void *a,const void *b)
10 {
11     return (*(timee *)a).ed - (*(timee *)b).ed;
12 }
13 int main()
14 {
15     int n,i,j;
16     while(cin>>n&&n)
17     {
18         for(i=0;i<n;i++)
19          cin>>t[i].st>>t[i].ed;
20         qsort(t,n,sizeof(t[0]),cmp);//对结束时间进行从小到大排序 
21         int k=1;
22         j=0;
23         for(i=1;i<n;i++)
24             if(t[i].st>=t[j].ed)
25             {
26                 j=i;
27                 k++;
28             }
29         cout<<k<<endl;
30     }
31 } 

 

posted on 2012-09-02 14:02  xinmenghuairi  阅读(375)  评论(0编辑  收藏  举报