刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

咖啡机

一台自动咖啡机按以下规则接单:制作一杯咖啡需要 c 秒,只有当前订单制作完成后,才能处理下一个订单。如果在制作期间,接到新订单,则做忽略处理。

有 n 位顾客下单,其中第 i 位顾客的下单时间为第 ti 秒,保证所有下单时间均不重复。这台咖啡机最多能完成多少杯订单?

时间限制:1000ms,内存限制:256MB

输入格式

第一行,两个整数表示 n、c;

第二行,n 个整数表示 t1、t2、t3、……、tn

输出格式

这台咖啡机最多能完成多少杯订单。


输入样例#1

6 5
1 3 12 10 8 7

输出样例#1

3

输入样例#2

3 2
0 2 4

输出样例#2

3

输入样例#3

10 3
0 3 4 9 15 12 6 17 19 20

输出样例#3

7

数据范围:

1≤n≤100;1≤c≤1000;0≤ti≤1000。

使用微信搜索喵呜刷题,轻松应对考试!

答案:

这个问题可以通过模拟的方式解决。我们可以维护一个指针,指向当前正在处理的订单的位置。然后,我们遍历所有的订单时间,对于每一个订单时间,我们检查它是否在当前订单完成之前到达。如果是,我们就忽略这个订单;否则,我们就处理这个订单,并更新当前订单的位置。最后,我们返回处理过的订单的数量作为结果。具体实现可以参考以下的C语言代码:

#include <stdio.h>

int maxOrders(int n, int c, int* t, int tSize) {
    int count = 0;  // 记录完成的订单数量
    int currentTime = 0;  // 当前时间
    int i = 0;  // 当前处理的订单的位置

    while (i < n) {
        if (t[i] >= currentTime) {  // 如果当前订单在当前时间到达,则处理这个订单
            count++;  // 增加完成的订单数量
            currentTime += c;  // 更新当前时间
        } else {  // 如果当前订单在当前时间之前到达,则忽略这个订单
            i++;  // 移动到下一个订单的位置
        }
    }

    return count;  // 返回完成的订单数量作为结果
}

解析:

这是一个模拟咖啡机处理订单的问题。咖啡机按照规则处理订单,即只有当前订单制作完成后,才能处理下一个订单。对于每一个订单,我们需要检查它是否在当前时间到达。如果是,我们就处理这个订单并更新当前时间;否则,我们就忽略这个订单并移动到下一个订单的位置。最后,我们返回处理的订单数量作为结果。这个算法的时间复杂度是O(n),其中n是订单的数量。

创作类型:
原创

本文链接:咖啡机 一台自动咖啡机按以下规则接单:制作一杯咖啡需要 c 秒,只有当前订单制作完成后,才能处理下一

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share