描述
设有n个活动的集合E={1,2,3…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动 i 都有一个要求使用该资源的起始时间 si 和一个结束时间 fi ,且si<fi。要求设计程序,使得安排的活动最多。
输入
输入只有一个用例,第一行为一正整数n,表示活动个数,接下来n行,每行两个整数,分别表示第 i 号活动的起始时间和结束时间。
输出
用一行输出所能安排的最多活动数。
输入样例
11
5 9
0 6
12 14
8 12
1 4
3 5
5 7
3 8
6 10
8 11
2 13
输出样例
4
#include<stdio.h>
struct la
{
int st,end;//st是开始时间 end是结束时间
} a[10000],k;
int main()
{
int n,i,j,b=1;
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%d %d",&a[i].st,&a[i].end);
for(i=0; i<n-1; i++)
for(j=0; j<n-1-i; j++)
if(a[j+1].end<a[j].end)
{
k=a[j+1];
a[j+1]=a[j];
a[j]=k;
}
j=0;
for(i=1; i<n; i++)//从第二个活动开始看
if(a[j].end<=a[i].st)//如果上一个确定了的节目结束时间小于接下来的开始时间
b++,j=i;//将这个节目确定下来,并且总节目数++
printf("%d\n",b);
return 0;
}