停车位预订

时间:2016-03-04 06:37:40

标签: vb.net algorithm intersection

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

有3个停车位可供选择:A,B和C.所有3个停车位可以同时预订,但不能超过这3个预订,或者我们将用完空间!< / p>

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

这代表了一个带有&#34;预订的调度程序控件&#34;用于停车位。 这是我目前正在做的一些伪代码:

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点之间工作。

我希望这个比较清楚。

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

1 个答案:

答案 0 :(得分:0)

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

无论如何,感谢大家的帮助。