栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++用sort函数对类自定义排序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++用sort函数对类自定义排序

题目描述 

“饱了么”推出了免单活动(免单:即订单金额退还,某一笔订单免单了代表这一笔订单不需要花钱)。

有 n(1≤n≤2000)个顾客点了外卖,第 i个人点外卖的时间为 ai(0≤ai≤23 小时 bi(0≤bi≤59) 分,花了 ci(1≤ci≤5000)元,以上数据均为整数。

花钱最多的 m(0≤m≤n)个人可以获得免单。如果有多人花钱一样多,则点单较早的顾客可以优先获得免单资格。

请问,哪些顾客可以被免单呢?

输入描述:
共 n+1 行。

第 1 行共两个数字,分别代表 n 和 m;

第 2 到 n+1 行,每行三个整数 ai,bi,ci;
输出描述:
共输出 m 行,每行 3 个数,分别代表每名获得免单的顾客的下单时间(时、分),以及这个顾客的下单金额。使用空格隔开。

消费金额更高的顾客将会优先输出,如果下单金额相同,则下单时间早的顾客优先输出。(如果无法理解可以先阅读样例和样例解释)。
思路:

本题只要对所有的数据进行排序即可,可将所有数据包装成结构体或一个类,定义一个结构体或者类数组,然后对其排序。排序时按照订单金额降序排列,订单金额相同时按照订单时间升序排列,优先付款的排在前面,然后输出前m个数据;

#include
#include
using namespace std;
//存放数据的类
class pp
{
    public:
        int a,b,c;
};
//自定义比较函数
bool cmp(pp p1,pp p2)
{
    if(p1.c!=p2.c)
    {
       if(p1.c>p2.c)
       {
           return true;//p1排在左边
       }
        else
        {
            return false;//p2排在左边
        }
    }
    else if(p1.a!=p2.a)
    {
      if(p1.a>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>p[i].a>>p[i].b>>p[i].c;
    }
   sort(p+1,p+n+1,cmp);
    for(int i=1;i<=m;i++)
    {
        cout< 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1001468.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号