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