PAT_1006 Sign In and Sign Out

题目链接
在这里插入图片描述
在这里插入图片描述

这个题涉及时间的比较,一开始用的小时分钟秒分别比较的方式,这样是比较麻烦的,实际上可以把时间存储为字符串,直接按照字典序比较即可。

小时分钟秒分别比较的方式:
采用sort的做法不好,因为没给定M的范围,所以数组不知道要开多大,因此还是边输入边比较记录最早和最晚时间对应的结构体才好。

#include <iostream>
#include <string.h>
#include <bits/stdc++.h>
#include<cstdio>
using namespace std;
struct Record{
    char id[16];
    int h1,m1,s1;
    int h2,m2,s2;
}records[1005];
bool cmp1(struct Record a,struct Record b){
    if(a.h1!=b.h1) {
        //cout << a.h1 << " " << b.h1 << endl;
        return a.h1<b.h1;
    }
    else if(a.m1!=b.m1) return a.m1<b.m1;
    else if(a.s1!=b.s1) return a.s1<b.s1;
}
bool cmp2(struct Record a,struct Record b){
    if(a.h2!=b.h2) return a.h2>b.h2;
    else if(a.m2!=b.m2) return a.m2>b.m2;
    else if(a.s2!=b.s2) return a.s2>b.s2;
}
int main() {
    int M;
    cin >> M;
    getchar();
    for(int i=0;i<M;i++){
        scanf("%s %d:%d:%d %d:%d:%d",records[i].id,&records[i].h1,&records[i].m1,&records[i].s1,&records[i].h2,&records[i].m2,&records[i].s2);
    }
    sort(records,records+M,cmp1);
    cout << records[0].id << " ";
    sort(records,records+M,cmp2);
    cout << records[0].id;
    return 0;
}

字符串的比较方式:

要记得strcmp函数前者比后者小的话返回负数,等于返回0,大于返回正数
char[]数组用strcpy来赋值

#include <iostream>
#include <string.h>
#include<cstdio>
using namespace std;
struct Record{
    char id[16];
    char in[9],out[9];
};
int main() {
    int M;
    cin >> M;
    getchar();
    struct Record tmp,early,last;

    strcpy(early.in,"23:59:59");
    strcpy(last.out,"00:00:00");
    for(int i=0;i<M;i++){
        scanf("%s %s %s",tmp.id,tmp.in,tmp.out);
        if(strcmp(tmp.in,early.in)  < 0) early=tmp;//小的话返回负数,等于返回0,大于返回正数
        if(strcmp(last.out,tmp.out) < 0) last=tmp;
    }
    cout << early.id << " " << last.id;

    return 0;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值