慢慢来er 2022-10-03 23:12 采纳率: 73.7%
浏览 81
已结题

c++题想知道哪里错了?

【问题描述】
阿迪在一个大型机场担任飞机跑道交通管制员,他控制一个通常用于着陆的跑道。因此,他有一个未来一段时间飞机着陆的时间安排,每次着陆持续时间为1分钟。
他被要求在安排表中插入一次起飞,起飞本身需要1分钟,但出于安全考虑,起飞和着陆之间应有至少s分钟的时间间隔。
请找出阿迪能插入的起飞的最早时间。

【输入形式】
输入的第一行包含两个整数n和s(1≤n≤100 ,1≤s≤60),分别表示在时间安排表中的着陆的航班数量以及在着陆与起飞之间的最小允许时间(以分钟计)。
接下来的n行,每行包含两个整数h和m (0≤h≤23, 0≤m≤59),表示飞机着陆的时间,以小时和分钟计,从当前时刻开始(也就是说当前时刻是0时0分),这些时间以递增的顺序给出。

【输出形式】
输出两个整数h和m,代表可以插入的起飞的最早时间的小时和分钟。

【样例输入】
6 60
0 0
1 20
3 21
5 0
19 30
23 40

【样例输出】
6 1

img


我的思路就是 两个着陆时间点之间的时间差满不满足起飞的条件。五组测试数据有一个错了,不清楚哪里错了?

  • 写回答

2条回答 默认 最新

  • 地球屋里老师 2022-10-04 13:38
    关注

    查找两个时间差距大于2s+2的就行。

    #include <iostream>
    using namespace std;
    int main()
    {
      int n, s;
      int h, m, i;
      int* t;
      cin >> n >> s;
      t = new int(n + 1);
      for (i = 0; i < n; i++)
      {
        cin >> h >> m;
        t[i] = 60 * h + m;
      }
      t[n] = t[0] + 24 * 60;
      for (i = 0; i < n; i++)
      {
        if (t[i + 1] - t[i] >= 2 * s + 2)
        {
          m = (t[i] + s + 1) % (24 * 60);
          h = m / 60;
          m %= 60;
          printf("%d %d\n", h, m);
          break;
        }
        if (i == n - 1) printf("无合适起飞窗口\n");
      }
      return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月15日
  • 已采纳回答 10月7日
  • 创建了问题 10月3日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度