问题描述: 全国各地向灾区人民捐赠的急需要物品以最快速度送往灾区,现在已知从今 天起全国 n 个地区的救缓车队各自出发的时间以及路途所用时间,现在要按到达 灾区的先后顺序公布各地区号以及到达灾区当日的时间,若同时到达,则路途用 时长的地区排在前面。 输入格式: 第一行为正整数 n(n≤100);接下来 n 行,每行为:地区号 h(0<h<=1000)、 出发时间(xx:xx)和路途用时(x 小时 y 分钟,数据保证不超过 7 天),具体格 式见样例。 输出格式: 一共 n 行,每行:地区号和到达灾区当日时间(xx:xx),以空格隔开。代码c++
时间: 2024-04-12 07:28:55 浏览: 17
以下是一个使用C++解决该问题的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Region {
int number;
int departureHour;
int departureMinute;
int travelHour;
int travelMinute;
int arrivalHour;
int arrivalMinute;
};
bool compareRegions(const Region& r1, const Region& r2) {
if (r1.arrivalHour != r2.arrivalHour) {
return r1.arrivalHour < r2.arrivalHour;
} else {
return r1.arrivalMinute < r2.arrivalMinute;
}
}
int main() {
int n;
cin >> n;
vector<Region> regions(n);
for (int i = 0; i < n; i++) {
cin >> regions[i].number;
char colon;
cin >> regions[i].departureHour >> colon >> regions[i].departureMinute;
int travelTime;
cin >> travelTime;
regions[i].travelHour = travelTime / 60;
regions[i].travelMinute = travelTime % 60;
// 计算到达时间
regions[i].arrivalHour = regions[i].departureHour + regions[i].travelHour;
regions[i].arrivalMinute = regions[i].departureMinute + regions[i].travelMinute;
// 处理分钟超过60的情况
if (regions[i].arrivalMinute >= 60) {
regions[i].arrivalHour++;
regions[i].arrivalMinute %= 60;
}
}
// 按到达时间排序
sort(regions.begin(), regions.end(), compareRegions);
// 输出结果
for (const auto& region : regions) {
cout << region.number << " ";
cout << region.arrivalHour << ":";
if (region.arrivalMinute < 10) {
cout << "0";
}
cout << region.arrivalMinute << endl;
}
return 0;
}
```
这段代码首先读取输入的地区数量n和每个地区的信息。然后,根据出发时间和路途用时计算到达时间,并将所有地区的信息存储在一个vector中。
然后,定义了一个compareRegions函数,用于比较两个地区的到达时间,以便在排序时使用。
接下来,使用sort函数对vector中的地区按照到达时间进行排序。
最后,按照要求的输出格式输出每个地区的地区号和到达时间。
希望对你有所帮助!如果还有其他问题,请随时提问。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)