和前面写的那篇活动安排的贪心算法是一个模式的,那一篇是按照活动的结束时间升序排序做,这道题也可以那样做,但是我改了一下,用开始时间做降序排序来做,刚好算法导论有一道类似这样的练习题,所以就做了,思想是差不多的。
//和活动安排是一类题目
//HDOJ2037
#include <iostream>
#include <algorithm>
using namespace std;
struct TV
{
int s; //start time
int f; //finish time
};
bool cmp(TV a,TV b)
{
return (a.s>b.s); //按开始时间降序排序
}
int main()
{
TV t[1000];
int n;
while(cin>>n)
{
if(n == 0)
break;
for(int i=0;i<n;i++)
cin>>t[i].s>>t[i].f;
sort(t,t+n,cmp);
int sum=1;
TV temp=t[0];
for(i=1;i<n;i++)
{
if(t[i].f <= temp.s)
{
sum++;
temp=t[i];
}
}
cout<<sum<<endl;
}
return 0;
}