C++ 排序算法:帮助小珅选择过年电视节目
C++ 排序算法:帮助小珅选择过年电视节目
小珅同学得到了妈妈的特许,可以在过年那天看一上午的电视。小珅同学想看的电视节目太多了,假设你已经知道了小珅同学喜欢看的那些电视节目的转播时间表,小珅同学的目标是从时间比较短的节目中挑选出过年看的,请你帮小珅同学给这些节目的持续时间排个序吧!
输入
输入共 n + 1 行:
第一行,一个正整数 n,表示小珅同学喜欢看的节目的总数; 接下来的 n 行,每行两个数据 si,ei (1 ≤ i ≤ n),分别表示第 i 个节目的开始时刻(单位分钟)和结束时间(单位分钟),以空格分隔。为了简化问题,每个时间都用一个正整数表示分钟。
输出
输入共 1 行:
将电视节目的持续时间按照从小到大输出,用空格隔开。
C++ 代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(pair<int, int> p1, pair<int, int> p2) {
return (p1.second - p1.first) < (p2.second - p2.first);
}
int main() {
int n;
cin >> n;
vector<pair<int, int>> programs;
for (int i = 0; i < n; i++) {
int start, end;
cin >> start >> end;
programs.push_back(make_pair(start, end));
}
sort(programs.begin(), programs.end(), compare);
for (int i = 0; i < n; i++) {
cout << programs[i].second - programs[i].first << " ";
}
return 0;
}
代码解释
- 使用
vector<pair<int, int>> programs来存储每个节目的开始时间和结束时间。 compare函数用于比较两个节目的持续时间,并根据持续时间从小到大排序。- 使用
sort函数对programs向量进行排序,排序函数的第三个参数为比较函数compare。 - 最后,循环输出每个节目的持续时间。
总结
这篇文章介绍了如何使用 C++ 代码实现排序算法,并以帮助小珅同学选择过年电视节目为例进行说明。排序算法是编程中常用的算法,掌握排序算法可以帮助我们更好地处理数据。
原文地址: https://www.cveoy.top/t/topic/o6oT 著作权归作者所有。请勿转载和采集!