【随手记_PAT甲级踩坑记】1006 Sign In and Sign Out

PAT甲级 A1006 Sign In and Sign Out


随手记录,只希望能帮助到同样遇到问题的小伙伴呀~
还是学生,水平有限,写的不好的地方有请指正~

这题没什么东西,无非需要把unlock时间和lock时间从输入的格式转成容易比较的形式(我转成秒数了),然后获取最小的unlock时间和最大的lock时间。

代码

#include<iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    string id_l;
    string id_u;//记录结果
    int u=24*3600+1;//初始的unlock时间,因为要找最小值,所以设成一天的秒数+1
    int l=-1;//初始的lock时间,因为要找最大值,所以设成-1
    string unlock_time;
    string lock_time;//暂存的输入的每个用户的unlock与lock时间字符串
    for(int i=0;i<n;++i){
        string id;//输入用户的id
        cin>>id;
        cin>>unlock_time>>lock_time;//输入unlock与lock时间
        //这里采用了比较原始的也比较简单的处理方式,因为是hour:minute:second的形式
        //使用下标直接访问每个字符串获取十位个位的值然后相加就转化为int了
        int hour=(unlock_time[0]-'0')*10+(unlock_time[1]-'0');
        int min=(unlock_time[3]-'0')*10+(unlock_time[4]-'0');
        int sec=(unlock_time[6]-'0')*10+(unlock_time[7]-'0');
        //统一转化成秒的形式,容易比较
        int unlock_time_int=hour*3600+min*60+sec;
        
        
        hour=(lock_time[0]-'0')*10+(lock_time[1]-'0');
        min=(lock_time[3]-'0')*10+(lock_time[4]-'0');
        sec=(lock_time[6]-'0')*10+(lock_time[7]-'0');
        int lock_time_int=hour*3600+min*60+sec;
        
        //获取最小unlock时间和最大lock时间并记录相应id
        if(unlock_time_int<u){
            u=unlock_time_int;
            id_u=id;
        }
        if(lock_time_int>l){
            l=lock_time_int;
            id_l=id;
        }
    }
    cout<<id_u<<" "<<id_l<<endl;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值