停车 Space 预订

Parking Space Reservations

我 运行 遇到了一个棘手的问题。这对你们大多数人来说可能很容易,但我只是没有看到它。

有 3 个可用停车位:A、B 和 C。所有 3 个都可以同时预订,但一次最多只能预订 3 个,否则我们将 运行空间!

我目前的问题可以在我的杰作中查看:http://i.imgur.com/6aFSTHu.png(这代表我正在使用的调度程序对象,左边标有时间)。

表示一个调度程序控件,"bookings" 用于停车位。 这是我目前正在做的一些伪代码:

function GetFreeSpace(Reservation Res)
    boolean intersects;

    for each Reservation R in ListOfReservationsInSpaceA
        if (R and Reservation are not the same)
            if (Res and R intersect)
                intersects = true;
                exit for;
            end if
        end if
    next

    if (intersects = false)
        ListOfReservationsInSpaceA.Add(Res);
        Return "A"
    end if

    intersects = false

    // do the same for spots B and C

    // if all spots are taken, return "none"
end function

但是根据我的代码,如果预订 1 是在上午 8 点到下午 5 点之间并且预订 A 点,预订 2 将在上午 10 点到晚上 8 点之间预订 B 点,而预订 3 将在下午 6 点到晚上 10 点之间预订 C 点(预订 1 完成后) , 应该在上午 8 点到晚上 10 点之间工作的预订 4 无法进行,因为所有位置都被占用了。

我希望这是相对清楚的。

感谢您的帮助!我使用的语言是 VB.NET,但我可以从 C、C++、C#、Java 等语言翻译

所以我发现我的原始算法在 100% 的时间内都有效,直到预订被取消,在这种情况下停车位不会被刷新。我很确定我在这里遇到的问题只发生在预订取消期间,因此我在取消代码中添加了 "refresh" 函数。事情似乎奏效了。我必须让我的测试人员确定这一点。

总之,谢谢大家的帮助。