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;
}

代码解释

  1. 使用 vector<pair<int, int>> programs 来存储每个节目的开始时间和结束时间。
  2. compare 函数用于比较两个节目的持续时间,并根据持续时间从小到大排序。
  3. 使用 sort 函数对 programs 向量进行排序,排序函数的第三个参数为比较函数 compare
  4. 最后,循环输出每个节目的持续时间。

总结

这篇文章介绍了如何使用 C++ 代码实现排序算法,并以帮助小珅同学选择过年电视节目为例进行说明。排序算法是编程中常用的算法,掌握排序算法可以帮助我们更好地处理数据。


原文地址: https://www.cveoy.top/t/topic/o6oT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录