用cpp写出:小美是一位天文爱好者,她收集了接下来一段时间中所有会划过她所在的观测地上空的流星信息。具体地,她收集了n个流星在她所在观测地上空的出现时刻和消失时刻。对于一个流星,若其的出现时刻为s,消失时刻为t,那么小美在时间段[s, t]都能够观测到它。对于一个时刻,观测地上空出现的流星数量越多,则小美认为该时刻越好。小美希望能够选择一个最佳的时刻进行观测和摄影,使她能观测到最多数量的流星。现在小美想知道,在这个最佳时刻,她最多能观测到多少个流星以及一共有多少个最佳时刻可供她选择
时间: 2024-02-12 14:07:13 浏览: 59
以下是用C++实现的代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> s(n), t(n);
for (int i = 0; i < n; i++) {
cin >> s[i] >> t[i];
}
int maxCount = 0, count = 0;
vector<int> bestTimes;
for (int i = 0; i < n; i++) {
count = 1;
for (int j = 0; j < n; j++) {
if (i != j && s[j] <= s[i] && t[j] >= s[i]) {
count++;
}
}
if (count > maxCount) {
maxCount = count;
bestTimes.clear();
bestTimes.push_back(s[i]);
} else if (count == maxCount) {
bestTimes.push_back(s[i]);
}
}
cout << maxCount << " " << bestTimes.size() << endl;
return 0;
}
```
代码思路:
1. 读入n个流星的出现时刻和消失时刻。
2. 遍历每个时刻,统计当前时刻的流星数量。
3. 如果当前时刻的流星数量大于最大流星数量,更新最大流星数量和最佳时刻列表。
4. 如果当前时刻的流星数量等于最大流星数量,将当前时刻添加到最佳时刻列表中。
5. 输出最大流星数量和最佳时刻个数。
阅读全文