按结束时间对结构体数组排序,然后定义一个当前时间,用当前时间与开始时间比较,如果开始时间大于等于当前时间,计数器就自加1,然后另当前时间等于结束时间。
/*************************************************************************
> File Name: 2037.cpp
> Author: 丧乱
> Mail: 1270458214@qq.com
> Created Time: 2015年11月22日 星期日 11时14分37秒
************************************************************************/
#include<iostream>
#include <algorithm>
#include <cstdio>
#include <stdbool.h>
using namespace std;
#define SIZE 101
struct program
{
int s; //开始时间
int e; //结束时间
}programs[SIZE];
bool compare(const program a, const program b);
int Program_Arrangement(int n);
bool compare(const program a, const program b)
{
return a.e < b.e;
}
int Program_Arrangement(int n)
{
int count=0,currTime=-1,i; //currTime 当前时间
sort(programs, programs+n,compare);
for(i=0;i<n;i++)
{
if(programs[i].s >= currTime)
{
count++;
currTime = programs[i].e;
}
}
return count;
}
int main()
{
int n,i;
while(scanf("%d", &n) != EOF && n)
{
for(i=0;i<n;i++)
scanf("%d%d", &programs[i].s, &programs[i].e);
printf("%d\n", Program_Arrangement(n));
}
return 0;
}