任务调度的贪心,
将任务按照结束时间排序,结束早的在前面,
只要从前向后扫一遍,每一次检查是否任务的开始时间是否符合规定即可。
这一题的buf[i].st >= curov不能写成>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct ta{
int st;
int ov;
//int ok=1;//能用的标志//突然发现扫描一遍就行,不需要这个标志
bool operator < (const ta& b)const
{
return ov<b.ov;
}
}buf[101];
int main()
{
int n;
int curov;
int cnt;
while(scanf("%d",&n)!=EOF&&n)
{
for(int i=0;i<n;i++)
{
scanf("%d%d",&buf[i].st,&buf[i].ov);
}
sort(buf,buf+n);
curov = 0;
cnt=0;
for(int i=0;i<n;i++)
{
if(buf[i].st >= curov)
{
cnt++;
curov=buf[i].ov;
}
}
printf("%d\n",cnt);
}
return 0;
}