贪心,水题
本题要点:
1、n个活动,按结束时间,从小到大排序
2、选择第一个活动,并删除与该活动冲突的活动。
3、重复第2步,直到活动为空。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MaxN = 110;
int n;
struct node
{
int st, ed;
}record[MaxN];
bool cmp(const node& a, const node& b)
{
return a.ed < b.ed;
}
void solve()
{
int cnt = 0;
sort(record, record + n, cmp);
node cur = record[0];
++cnt;
for(int i = 1; i < n; ++i)
{
if(record[i].st >= cur.ed)
{
++cnt;
cur = record[i];
}
}
printf("%d\n", cnt);
}
int main()
{
while(scanf("%d", &n) != EOF && n)
{
for(int i = 0; i < n; ++i)
{
scanf("%d%d", &record[i].st, &record[i].ed);
}
solve();
}
return 0;
}
/*
12
1 3
3 4
0 7
3 8
15 19
15 20
10 15
8 18
6 12
5 10
4 14
2 9
0
*/
/*
5
*/