C#中的公交车座位预订算法

时间:2018-04-14 04:52:18

标签: c# algorithm

我正在使用公交车票预订系统。我在预订模块中遇到问题。

假设我们有公共汽车的路线从" A"到" D"通过" B" &安培; " C"

巴士从" A"然后到达" B"然后" C"最终目的地是" D"。

假设某人正在预留座位号" 1"为" B"对于" C",这个座位不适用于正在寻找座位的人来自" A"到" D"或" B"到" D"但同一座位应该适用于" A"到" B"或" C"到" D"

摘要中的示例

座位号1保留用于" B"到" C"

  • 1号席位不适用于" A" - " D"
  • 第1号席位不适用于" B" - " D"
  • 座位号1不适用于" B" - " C"
  • 座位号1应该适用于" A"到" B"
  • 座位号1应该可用于" C"到" D"

如果已经有一个算法或dotnet c#代码来解决这个问题,请问。

提前致谢

1 个答案:

答案 0 :(得分:0)

因为这是一个家庭工作问题,所以给你一个家庭工作答案...

在一张纸上写下你的巴士站

A ---- B ---- C ---- D ---- E ---- F 

然后试试这个

  1. 将您的左手指放在A上然后用右手指连续触摸每个字母(BCDEF)并问你的自己是这次旅行的座位(直到你到达F)。

  2. 然后用右手移动左手指B,连续触摸每个字母(CDEF并且问你的自己是这次旅行的座位(直到你到达F)。

  3. 然后用你的右手指移动你的左手C,连续触摸每个字母(DEF)并问你自己是这个旅行的座位(直到你到达F)。

  4. 你明白了......

  5. 你看到这里发生了什么?你正在慢慢检查每个组合。那么你可能会问的两根手指的重要性是什么?好吧,他们可以被认为是停止列表中的2个索引......

    那么我们如何迭代列表并使用你可能会问的2个索引...只需使用2个for循环,一个在另一个内部

    for(var leftFingerIndex = 0; leftFingerIndex < NumberOfStops; leftFingerIndex++)
        for(var rightFingerIndex = leftFingerIndex + 1; rightFingerIndex< NumberOfStops; rightFingerIndex++)
           // if the your right finger is ever at bus stop were your seat is booked
           // then the trip from your left finger to the right + 1 is invalid, 
           // and all subsequent right finger indexes 
    

    现在我可以离开给你写座位和巴士站的课程,但我不会。这是你的工作和你的家庭作业,你足够聪明,可以为自己想出这一切。

    祝你好运