HDU 1234 开门人和关门人

刚发现,做的这几道浙大复试上机题我都是用结构体完成的

用结构体做的,或许有其他更好的方法


开始:小时不同时谁小谁最早,小时相同比较分钟,分钟相同比较秒.....

结束:小时不同时谁大谁最晚,小时相同比较分钟,分钟相同比较秒.....


#include<stdio.h>

struct start {
  int h;
  int m;
  int s;
};

struct time {
  char ch[20];
  struct start b;
  struct start f;
}Time[1000];

int main(void)
{
  int n;
  scanf("%d", &n);
  while (n--) {
    int num;
    struct time min, max;
    int minPos, maxPos;
    scanf("%d", &num);
    scanf("%s %d:%d:%d %d:%d:%d", Time[0].ch, &Time[0].b.h, &Time[0].b.m, &Time[0].b.s,
            &Time[0].f.h, &Time[0].f.m, &Time[0].f.s);
    min = max = Time[0];
    for (int i = 1; i < num; i++) {
      scanf("%s %d:%d:%d %d:%d:%d", Time[i].ch, &Time[i].b.h, &Time[i].b.m, &Time[i].b.s,
            &Time[i].f.h, &Time[i].f.m, &Time[i].f.s);

      if (Time[i].b.h < min.b.h || (Time[i].b.h == min.b.h && Time[i].b.m < min.b.m) || (
            Time[i].b.h == min.b.h && Time[i].b.m == min.b.m && Time[i].b.s < min.b.s)) {
        min =Time[i];
        minPos = i;
      }

      if (Time[i].f.h > max.f.h || (Time[i].f.h == max.f.h && Time[i].f.m > max.f.m) || (
            Time[i].f.h == max.f.h && Time[i].f.m == max.f.m && Time[i].f.s > max.f.s)) {
        max =Time[i];
        maxPos = i;
      }
    }
    printf("%s %s\n", min.ch, max.ch);
  }
  return 0;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值