zoukankan      html  css  js  c++  java
  • 洛谷P1105 普及- 生日

            标签:模拟,字符串,排序(快排)

            这道题可以巧妙地运用结构体中记录在数组中的位置,来对sort做点手脚

            题意本身就是记录一些人,他们出生日的日期,然后输出从小到大的名字。如果是同一天,则输出在输入序列中靠后的人。

           

            解决日期的比较本身很简单,但是同天时,输出在输入序列中靠后的人这一点似乎有点不太好做。

            然而可以这样做,在struct结构体中定义一个变量level,记录这个对象在数组中的对象,在cmp函数中,如果发现是同年同月同日生,就返回a.level > b.level,这样在排序中,就会导致输入序列中靠后的人排在前面。

            以下是关键代码:

    struct sdata
    {
        string name;
        int year, month, day;
        int level;
        sdata(string n = "",int y = 0,int m = 0,int d = 0,int l = -1)
            :name(n),year(y),month(m),day(d),level(l) {}
    }p[N];
    
    bool cmp(sdata& a, sdata& b)
     {
         if (a.year != b.year)
             return a.year < b.year;
         if (a.month != b.month)
             return a.month < b.month;
         if (a.day != b.day)
             return a.day < b.day;
         return a.level > b.level;
     }
  • 相关阅读:
    弹性盒子模型属性之flex-shrink
    Git----基本操作
    Git----简介
    ES6常用语法
    nginx学习
    Shell基础命令(二)
    Linux目录
    Shell基础命令(一)
    CRM之分页
    Django之ModelForm组件
  • 原文地址:https://www.cnblogs.com/HotPants/p/11885645.html
Copyright © 2011-2022 走看看