题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2037
这是典型的贪心算法的例题,通过将节目结束时间按从小到大排序,然后比较节目的结束时间与下一个节目的开始时间比较,获得最大的观看的节目的数量。
#include <stdio.h>
#include <algorithm>
using namespace std;
struct TI
{
int Ti_s;
int Ti_e;
};
bool camp (struct TI a, struct TI b)
{
return a.Ti_e < b.Ti_e;
}
int main ()
{
struct TI arry[100];
int num, i, j, count;
while(scanf("%d", &num) != EOF && num != 0)
{
count = 1;
for(i = 0; i < num; i++)
{
scanf("%d%d", &(arry[i].Ti_s), &(arry[i].Ti_e));
}
sort(arry, arry+num, camp);
i = 0;
for(j = 1; j < num; j++)
{
if(arry[j].Ti_s >= arry[i].Ti_e)
{
i = j;
count++;
}
}
printf("%d\n", count);
}
return 0;
}