先将结束时间从小到大排序,然后依次找能够大于等于上一次结束时间的开始时间的节目。
题目描述
sdut 大学生艺术中心每天都有n个活动申请举办,但是为了举办更多的活动,必须要放弃一些活动,求出每天最多能举办多少活动。
输入
输入包括多组输入,每组输入第一行为申请的活动数n(n<100),从第2行到n+1行,每行两个数,是每个活动的开始时间b,结束时间e;
输出
输出每天最多能举办的活动数。
示例输入
12 15 20 15 19 8 18 10 15 4 14 6 12 5 10 2 9 3 8 0 7 3 4 1 3
示例输出
5#include<stdio.h> #include<algorithm> using namespace std; struct act { int begin; int end; }a[105],q; int cmp(act a,act b) { return a.end<b.end; } int main() { int n,i,b[105],k,count; while(~scanf("%d",&n)) { for(i=0;i<n;i++) scanf("%d%d",&a[i].begin,&a[i].end); sort(a,a+n,cmp); count=1;//b[0].end=a[0].end;k=0; q.end=a[0].end; for(i=1;i<n;i++) { if(a[i].begin>=q.end)//if(a[i].begin>=b[k]) { count++; //k++; //b[k]=a[i].end; q.end=a[i].end; } } printf("%d\n",count); } return 0; }