请用C++写出以下题目的正确代码,样例已给出: 一位会计师接到n家公司的面试通知,各家公司的通知书内包含有面试的开始和结束时间。巧合的是,所有公司面试的时间都是同一天。这位会计师希望可以面试尽量多的公司。但各家公司的面试时间发生冲突的事情将无法避免。而面试官对时间的要求非常严格,如果出现迟到的情况,他将毫不犹豫的取消这次面试。所以这位会计师希望您帮忙设计一个程序来帮助他安排面试的事情,使得他能尽可能多的得到面试的机会。从一个面试点到另一个面试点的时间忽略不计。 输入格式 第一行:一个整数n(1<=n<=1000),表示面试的总数量。 接下来n行每行包括两个正整数s、t,分别表示该面试点给出的起始时间和终止时间。其中ss<t。(0<s<t≤10000); 输出格式 能够参加的面试最大数。 输入/输出例子1 输入: 3 1 15 2 19 15 17 输出: 2
时间: 2024-02-12 12:08:42 浏览: 27
以下是题目的正确代码:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
struct Interview {
int start_time;
int end_time;
};
bool cmp(Interview a, Interview b) {
return a.end_time < b.end_time;
}
int main() {
int n;
cin >> n;
Interview arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i].start_time >> arr[i].end_time;
}
sort(arr, arr + n, cmp);
int ans = 0, end_time = 0;
for (int i = 0; i < n; i++) {
if (arr[i].start_time >= end_time) {
ans++;
end_time = arr[i].end_time;
}
}
cout << ans << endl;
return 0;
}
```
思路解析:
题目要求安排尽可能多的面试,因此我们可以考虑贪心算法。先按照所有面试的结束时间从早到晚排序,然后从前往后依次遍历每个面试的开始时间,如果该面试的开始时间晚于等于当前已安排的所有面试的结束时间,那么就可以安排这个面试,否则就不能安排这个面试。每次安排一个面试后,更新已安排的所有面试的结束时间,直到遍历完所有面试为止。