当然可以!下面是使用基础C++算法编写的解决方案:
#include <iostream>
#include <vector>
#include <algorithm>
// 定义闹钟类,包括小时和分钟
struct Alarm {
int hour;
int minute;
};
// 自定义排序函数,按照时间先后顺序排序
bool compareAlarm(const Alarm& a, const Alarm& b) {
if (a.hour == b.hour) {
return a.minute < b.minute;
} else {
return a.hour < b.hour;
}
}
int main() {
int n; // 事件数量
std::cin >> n;
std::vector<Alarm> schedule; // 存储事件时间
for (int i = 0; i < n; ++i) {
int hour, minute;
char colon;
std::cin >> hour >> colon >> minute;
schedule.push_back({hour, minute});
}
std::vector<Alarm> alarms; // 存储闹钟时间
for (const auto& event : schedule) {
alarms.push_back({event.hour, event.minute - 5});
alarms.push_back({event.hour, event.minute - 3});
alarms.push_back({event.hour, event.minute - 1});
}
std::sort(alarms.begin(), alarms.end(), compareAlarm); // 按照时间顺序排序
// 输出闹钟时间
for (const auto& alarm : alarms) {
std::cout << std::setw(2) << std::setfill('0') << alarm.hour << ":"
<< std::setw(2) << std::setfill('0') << alarm.minute << std::endl;
}
return 0;
}
这段代码使用了`vector`来存储事件时间和闹钟时间,并通过自定义的排序函数`compareAlarm`来按照时间先后顺序进行排序。最后,使用`setw`和`setfill`来保持输出格式的对齐。
希望这个基础C++算法的解决方案能够满足你的需求!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |