博客
关于我
PAT甲级——1006 Sign In and Sign Out (25分)
阅读量:795 次
发布时间:2023-02-26

本文共 1588 字,大约阅读时间需要 5 分钟。

为了解决这个问题,我们需要找出在一天中第一位签到的同学和最后一位签退的同学,这两位同学分别负责开门和关门。我们可以通过将签到和签退时间转换为秒来比较时间,并找到最早的签到时间和最晚的签退时间对应的同学。

方法思路

  • 读取输入数据:首先读取输入的总记录数 M,然后读取每一行的记录,解析出每个同学的 ID、签到时间和签退时间。
  • 转换时间:将签到和签退时间从 "HH:MM:SS" 格式转换为秒数,这样可以方便比较时间。
  • 记录最小和最大时间:遍历所有记录,找出签到时间最小的同学和签退时间最大的同学。这些同学分别是开门和关门的同学。
  • 输出结果:输出这两个同学的 ID。
  • 解决代码

    #include 
    #include
    #include
    #include
    using namespace std;struct Person { string id; string signInTime; string signOutTime;};int main() { int M; cin >> M; vector
    people; for (int i = 0; i < M; ++i) { string id, signIn, signOut; cin >> id >> signIn >> signOut; people.push_back({id, signIn, signOut}); } int minSignIn = 1e9; int maxSignOut = 0; string minId, maxId; for (const auto& p : people) { int signIn = timeToSeconds(p.signIn); int signOut = timeToSeconds(p.signOut); if (signIn < minSignIn) { minSignIn = signIn; minId = p.id; } if (signOut > maxSignOut) { maxSignOut = signOut; maxId = p.id; } } cout << minId << ' ' << maxId << endl; return 0;}int timeToSeconds(const string& time) { int h = stoi(time.substr(0, 2)); int m = stoi(time.substr(3, 2)); int s = stoi(time.substr(6, 2)); return h * 3600 + m * 60 + s;}

    代码解释

  • 读取输入:使用 cin 读取输入数据,解析出每个同学的 ID、签到时间和签退时间,并将这些信息存储在一个 Person 结构体中。
  • 时间转换函数timeToSeconds 函数将时间字符串转换为秒数,方便比较。
  • 寻找最小和最大时间:遍历所有记录,分别记录最小的签到时间和最大的签退时间,以及对应的同学 ID。
  • 输出结果:将找到的开门和关门同学的 ID 打印出来。
  • 这种方法确保了我们能够高效地找到正确的同学,并且代码结构清晰,易于理解和维护。

    转载地址:http://bavfk.baihongyu.com/

    你可能感兴趣的文章
    Panalog 日志审计系统 sprog_upstatus.php SQL 注入漏洞复现(XVE-2024-5232)
    查看>>
    Panalog 日志审计系统 前台RCE漏洞复现
    查看>>
    PANDA VALUE_COUNTS包含GROUP BY之前的所有值
    查看>>
    Pandas - 有条件的删除重复项
    查看>>
    pandas -按连续日期时间段分组
    查看>>
    pandas -更改重新采样的时间序列的开始和结束日期
    查看>>
    SpringBoot+Vue+Redis前后端分离家具商城平台系统(源码+论文初稿直接运行《精品毕设》)15主要设计:用户登录、注册、商城分类、商品浏览、查看、购物车、订单、支付、以及后台的管理
    查看>>
    pandas :to_excel() float_format
    查看>>
    pandas :加入有条件的数据框
    查看>>
    pandas :将多列汇总为一列,没有最后一列
    查看>>
    pandas :将时间戳转换为 datetime.date
    查看>>
    pandas :将行取消堆叠到新列中
    查看>>
    pandas DataFrame 中的自定义浮点格式
    查看>>
    Pandas DataFrame 的 describe()方法详解-ChatGPT4o作答
    查看>>
    Pandas DataFrame中删除列级的方法链接解决方案
    查看>>
    Pandas DataFrame中的列从浮点数输出到货币(负值)
    查看>>
    Pandas DataFrame中的列从浮点数输出到货币(负值)
    查看>>
    Pandas DataFrame多索引透视表-删除空头和轴行
    查看>>
    pandas DataFrame的一些操作
    查看>>
    Pandas Dataframe的日志文件
    查看>>