#include<stdio.h>
#include<algorithm>
using namespace std;
struct start
{
int s;
int e;
}Ti[101];
bool cmp(start a, start b)
{
return a.e<b.e;
}
int main()
{
int n, i, sum;
while(~scanf("%d", &n), n)
{
for(i=0; i<n; i++)
{
scanf("%d%d", &Ti[i].s, &Ti[i].e);
}
sort(Ti, Ti+n, cmp);
sum = 1;
int t = Ti[0].e;
for(i=1; i<n; i++)
{
if(t <= Ti[i].s)
{
sum++;
t = Ti[i].e;
}
}
printf("%d\n", sum);
}
return 0;
}
#include<algorithm>
using namespace std;
struct start
{
int s;
int e;
}Ti[101];
bool cmp(start a, start b)
{
return a.e<b.e;
}
int main()
{
int n, i, sum;
while(~scanf("%d", &n), n)
{
for(i=0; i<n; i++)
{
scanf("%d%d", &Ti[i].s, &Ti[i].e);
}
sort(Ti, Ti+n, cmp);
sum = 1;
int t = Ti[0].e;
for(i=1; i<n; i++)
{
if(t <= Ti[i].s)
{
sum++;
t = Ti[i].e;
}
}
printf("%d\n", sum);
}
return 0;
}
本文介绍了一个基于活动选择问题的经典算法实现。通过定义结构体来表示活动的开始时间和结束时间,并利用比较函数对活动按结束时间进行排序。该算法能够找出最大数量且互不冲突的活动集合。
493

被折叠的 条评论
为什么被折叠?



