题目
题解思路
这种题只要记住每次取最早结束的节目这个结论就能AC了,但是书里将开始时间和结束时间用pair映射然后排序的操作在编译器实现不了,正常操作应该是用结构体把两个时间存到结构体数组里去,在进行cmp结构体排序的函数定义然后sort就能排序出每次最早结束的时间了。
AC代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
struct ttt
{
int s;
int e;
}a[101];
bool cmp( ttt&a,ttt&b)
{
return a.e<b.e;
}
int main()
{
int n;
while( scanf("%d",&n))
{
if(n==0)
break;
for(int i=0;i<n;i++)
{
int t1,t2;
scanf("%d%d",&t1,&t2);
a[i].s=t1;
a[i].e=t2;
}
sort(a,a+n,cmp);
int tmp=a[0].e,ans=1;
for(int i=1;i<n;i++)
{
if(tmp<=a[i].s)
{
tmp=a[i].e;
ans++;
}
}
printf("%d\n",ans);
}
return 0;
}