「PAT甲级真题解析」Advanced Level 1006 Sign In and Sign Out

2023-10-26

PAT (Advanced Level) Practice 1006 Sign In and Sign Out

如果对你有帮助,要点个赞让我知道喔~

问题分析

  1. 题目给出一组学生进入机房的进入时间和离开时间, 要求找出最早进入机房开门的人以及最晚离开机房锁门的人.
    到这里我们可以看出题目的重点在于查找, 而查找会涉及到数据的存储, 如果存储数据以及在储存的数据中进行查找是我们要考虑的核心。
  2. 我们可以存储所有的进入时间和对应的学生ID, 然后比较出最早的进入时间。但我们在乙级的题目练习中多次提到, 数据存储是为了使用,
    在这种情况下, 进入时间在进行一次比较之后就不会再用到了, 所以可以不需要存储全部进入时间, 而是直接存储当前最早进入时间然后不断更新。
  3. 同理, 可以找出最晚离开时间。
  4. 由于要求输出学生ID, 所以要同时存储当前最早进入时间和当前最晚离开时间所对应的学生ID.

完整描述步骤

  1. 获取输入: 学生进出记录数目
  2. 初始化计数器:
    • 当前最早进入时间
    • 当前最早进入时间对应的学生ID
    • 当前最晚离开时间
    • 当前最晚离开时间对应的学生ID
  3. 对每一条学生进出记录:
    • 获取输入: 学生ID, 进入时间, 离开时间
    • 如果该学生进入时间小于当前最早进入时间, 则:
      • 更新"当前最早进入时间"为该学生的进入时间
      • 更新"当前最早进入时间对应的学生ID"为该学生的ID
    • 如果该学生离开时间大于当前最晚离开时间, 则:
      • 更新"当前最晚离开时间"为该学生的离开时间
      • 更新"当前最晚离开时间对应的学生ID"为该学生的ID
  4. 遍历结束, 输出:
    • 当前最早进入时间对应的学生ID
    • 当前最晚离开时间对应的学生ID

伪代码描述

  1. get input: amount
  2. init recorder:
    • min_time = “24:00:00”
    • min_ID = “”
    • max_time = “00:00:00”
    • max_ID = “”
  3. for each record:
    • get record input: ID, in_time, out_time;
    • if in_time < min_time:
      • min_time = in_time;
      • min_ID = ID;
    • if out_time > max_time:
      • max_time = out_time;
      • max_ID = ID;
  4. print(min_ID, max_ID);

完整提交代码

/*
# 问题分析
1. 题目给出一组学生进入机房的进入时间和离开时间, 要求找出最早进入机房开门的人以及最晚离开机房锁门的人.
到这里我们可以看出题目的重点在于查找, 而查找会涉及到数据的存储, 如果存储数据以及在储存的数据中进行查找是我们要考虑的核心。
2. 我们可以存储所有的进入时间和对应的学生ID, 然后比较出最早的进入时间。但我们在乙级的题目练习中多次提到, 数据存储是为了使用,
在这种情况下, 进入时间在进行一次比较之后就不会再用到了, 所以可以不需要存储全部进入时间, 而是直接存储当前最早进入时间然后不断更新。
3. 同理, 可以找出最晚离开时间。
4. 由于要求输出学生ID, 所以要同时存储当前最早进入时间和当前最晚离开时间所对应的学生ID.

# 完整描述步骤
1. 获取输入: 学生进出记录数目
2. 初始化计数器:
    - 当前最早进入时间
    - 当前最早进入时间对应的学生ID
    - 当前最晚离开时间
    - 当前最晚离开时间对应的学生ID
3. 对每一条学生进出记录:
    - 获取输入: 学生ID, 进入时间, 离开时间
    - 如果该学生进入时间小于当前最早进入时间, 则:
        - 更新"当前最早进入时间"为该学生的进入时间
        - 更新"当前最早进入时间对应的学生ID"为该学生的ID
    - 如果该学生离开时间大于当前最晚离开时间, 则:
        - 更新"当前最晚离开时间"为该学生的离开时间
        - 更新"当前最晚离开时间对应的学生ID"为该学生的ID
4. 遍历结束, 输出:
    - 当前最早进入时间对应的学生ID
    - 当前最晚离开时间对应的学生ID

# 伪代码描述
1. get input: amount
2. init recorder:
    - min_time = "24:00:00"
    - min_ID = ""
    - max_time = "00:00:00"
    - max_ID = ""
3. for each record:
    - get record input: ID, in_time, out_time;
    - if in_time < min_time:
        - min_time = in_time;
        - min_ID = ID;
    - if out_time > max_time:
        - max_time = out_time;
        - max_ID = ID;
4. print(min_ID, max_ID);
*/

# include<iostream>
using namespace std;

int main(){
    int amount;
    cin >> amount;
    string ID, in_time, out_time;
    string max_ID = "";
    string max_time = "00:00:00"; 
    string min_ID = "";
    string min_time = "24:00:00";
    for (int i = 0; i < amount; i++){
        cin >> ID >> in_time >> out_time;
        int res = in_time.compare(min_time);
        if (res < 0){
            min_time = in_time;
            min_ID = ID;
        }
        res = out_time.compare(max_time);
        if (res > 0){
            max_time = out_time;
            max_ID = ID;
        }
        
    }
    
    cout << min_ID << " " << max_ID;
    
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

「PAT甲级真题解析」Advanced Level 1006 Sign In and Sign Out 的相关文章

随机推荐

  • 重学webpack5——生产环境配置

    目录 前言 一 CSS文件 1 提取css 成单独文件 2 CSS兼容性处理 3 压缩CSS 二 Js文件 1 JS语法检查eslint 2 JS兼容性处理 3 JS压缩 三 HTML文件 四 生产环境总结 前言 生产环境是能让代码优化上线
  • selenium应用

    Selenium 学习参考 http selenium python readthedocs io 自动化测试工具 它支持各种浏览器 包括 Chrome Safari Firefox 等主流界面式浏览器 如果在这些浏览器里面安装一个 Sel
  • Elasticsearch RestHighLevelClient API 使用总结

    Elasticsearch RestHighLevelClient API 使用总结 题记 深秋初冬的一个晚上 突然间收到业务一个需求 要在老系统上使用新系统Elasticsearch库的数据 目前项目情况 新 老系统并行运行 根据产品 渠
  • 关于ftp上传文件系统时间差8个小时的时区问题

    2022年5月20日09 14 28 昨天上传代码出现一个奇怪的问题 就是视图缓存一直不更新 一开始以为是解析层waf的缓存不更新 导致waf不更新的原因是因为代码层的生产的视图缓存不更新 导致代码层的缓存不更新的是 就是ftp上传时间和服
  • git php 代码检查,gitlab下对php代码进行检测

    我们都知道 有一个世界上最好的语言 但在实际项目中也要考虑下历史的进程 避免一些错误导致程序无法运行 比如语法上的错误 所以我们要对代码进行检测 实现这个目标需要解决几个问题 什么时候检测代码 并拒绝异常代码的提交 以什么做标准 通过什么工
  • Latex公式太长,换行的两种方式

    latex中公式进行换行 begin equation begin aligned Ttran i j j 1 frac R bd j j 1 ij AR bd j j 1 ij times T ideal tran ij v u in l
  • 2020年总结:互联网思维下的工业软件开发

    2020年的年终总结像往年一样如期而至 今年是个特殊的年份 疫情爆发 全国人民众志成城 支援武汉 把武汉疫情完美控制 接下来经历了一个整年的抗疫生活 见证了一个个门店的倒下 站起 一个个公司申请破产 又一个个公司申请登记注册 这一个年 见证
  • fread函数解析

    fread函数解析 1 size t fread void buffer size t elementsize size t count FILE stream return fread s buffer SIZE MAX elements
  • 微信小程序纯css实现一个弹出的菜单

    1 实现效果 2 实现原理 animation动画 transform属性 rotateZ translate 3 实现代码
  • 必读:学习C语言编程的路线图

    学习C语言编程 可以丰富编程思维的训练和经验 以下是一些学习C语言编程的路线图 设置开发环境 在计算机上安装C编译器 GNU编译器集合 GCC 是一个流行的选择 适用于Windows macOS和Linux等各种操作系统 安装IDE编程环境
  • 数据清洗方法

    来源 我是码农 转载请保留出处和链接 本文链接 http www 54manong com id 1220 1 数据错误 脏数据或错误数据 比如 温度 2003 数据不正确 0 代表真实的0还是代表缺失 数据不一致 2 删除重复值 删除重复
  • Shell脚本——条件语句

    shell脚本 编程条件语句 条件测试 if语句 case分支语句 一 条件测试 1 1 Test命令 1 2 文件测试 1 3整数值比较 1 4字符串比较 1 5逻辑测试 二 if语句 2 1 单分支结构 2 2双分支结构 2 3多分支结
  • Eclipse 语言包下载

    1 登陆http www eclipse org babel downloads php 选择你的eclipse版本 2 找到IDE中文补丁包 INDIGO的地址如下 http download eclipse org technology
  • Maven(六) eclipse 使用Maven deploy命令部署构建到Nexus

    转载于 http blog csdn net jun55xiu article details 43051627 1 应用场景 SYS UTIL 系统工具 项目部署 构建成JAR包 SYS UTIL XXX jar 存储到Nexus私服上
  • spring boot 使用application.properties 进行外部配置

    application properties大家都不陌生 我们在开发的时候 经常使用它来配置一些可以手动修改而且不用编译的变量 这样的作用在于 打成war包或者jar用于生产环境时 我们可以手动修改环境变量而不用再重新编译 spring b
  • python里的pypi是干什么用的_【python工具篇】pip和pypi

    PyPI the Python Package Index The Python Package Index is a repository of software for the Python programming language T
  • HTTP中GET,POST和PUT的区别

    一 HTTP中定义了以下几种请求方法 1 GET 2 POST 3 PUT 4 DELETE 5 HEAD 6 TRACE 7 OPTIONS 二 各个方法介绍 1 GET方法 对这个资源的查操作 2 DELETE方法 对这个资源的删操作
  • 电脑检测不到第二个显示器的解决方法

    一般是因为显示适配器被失效了 右击开始菜单 选择 设备管理器 再选择 显示适配器 这时图标上一般会带上感叹号 右击后选择禁用 再选择启用就能检测到第二个显示器
  • 第一个跑马灯实验

    如何新建一个工程 1 打开工程模板 删除其他不重要的库文件 把main 函数里的内容删除 不用的外设固件库文件可以删掉 节省编译时间 rcc 时钟使能 usart 串口 复用映射 setbits 设置高电平 resetbits 低电平 2
  • 「PAT甲级真题解析」Advanced Level 1006 Sign In and Sign Out

    PAT Advanced Level Practice 1006 Sign In and Sign Out 如果对你有帮助 要点个赞让我知道喔 文章目录 问题分析 完整描述步骤 伪代码描述 完整提交代码 问题分析 题目给出一组学生进入机房的