-
题目描述:
-
又到毕业季,很多大公司来学校招聘,招聘会分散在不同时间段,小明想知道自己最多能完整的参加多少个招聘会(参加一个招聘会的时候不能中断或离开)。
-
输入:
-
第一行n,有n个招聘会,接下来n行每行两个整数表示起止时间,由从招聘会第一天0点开始的小时数表示。
n <= 1000 。
-
输出:
-
最多参加的招聘会个数。
-
样例输入:
-
3 9 10 10 20 8 15
-
样例输出:
-
2
贪心算法,每次取先结束的活动
#include<iostream>
#include<algorithm>
using namespace std;
struct A {
int beg;
int end;
};
A act[1001];
bool comp(A a, A b) {
return a.end < b.end;
}
int main()
{
int n;
while (cin >> n) {
for (int i=0; i!=n; ++i)
cin >> act[i].beg >> act[i].end;
sort (act, act +n ,comp);
int tend = act[0].end;
int count = 1;
for (int i=1; i!=n; ++i)
if (act[i].beg >= tend) {
++count;
tend = act[i].end;
}
cout << count << endl;
}
return 0;
}