我遇到了一个棘手的问题。它对你们大多数人来说可能很容易,但我只是没有看到它。
有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等翻译。
答案 0 :(得分:0)
所以我发现我的原始算法在100%的时间内都有效,直到预订被取消,在这种情况下停车位不会刷新。我很肯定我在这里遇到的问题只发生在预订取消期间,所以我在取消代码中添加了“刷新”功能。事情似乎有效。我必须让我的测试人员确定这一点。
无论如何,感谢大家的帮助。