【发布时间】:2012-02-25 06:29:06
【问题描述】:
我想做的是创建一个程序,为驾驶考试分配路线。将有三条不同的路线,在某些点连接在一起。一个交叉点永远不应该有超过一个学生。
解决此问题的最佳方法是按时间安排这些交汇点。
这不是我唯一的问题,我需要将路线平均分配给考官。 所以路线 1 将给考官 1 路线 2 - 考官 2 路线 3- 考官 3...
真正的鲍曼建议:
从一开始就计算碰撞时间。
路线 1 有 6 个点。
{A,B,C,D,E,F}路线 2 有 5 个点。
{A,F,G,H,I}路线 3 有 6 个点。
{A,H,K,L,M,N}可能发生冲突:
{A,F,H}所以你需要计算以下时间:
路线1:A->F,A->A
路线2:A->F、A->H、A->A
路线 3:A->H、A->A
您可以从这里计算产生碰撞的时间差。
如果从路线 1A 到路线 1F 和 5 需要 20 分钟 从 Route 2A 到 Route 2F 需要几分钟,然后你就知道发生了碰撞 如果在 Route 2 上开始约会正好 15 分钟后会发生 您在 Route 1 开始预约。
然后你会有一组无效的碰撞:
路线 1 和 2 在 15、25、40 处相撞
路线 1 和 3 在 25、30 处相撞
Route 2 & 3 在 30, 40, 45 相撞
这点我可以理解。但就算法而言,我不知道从哪里开始。 如果有人可以帮助我使用一些伪代码来解决问题,或者让我自己更清楚。这会很有帮助。
【问题讨论】:
-
另外,学生可以同时离开和返回总部,还是违反你的交叉规则?
-
"什么是最好的编码方式"?好吧,当然不会让别人为你思考:)
-
我还想提一下,您所有不与另一条路线发生冲突的点都不需要在那里。只需将其完全删除。在路线一的情况下,您只需要从起点到第二点到最后一点,再到终点(如果顺时针方向)。第二条路线只有3个点,第三条也是。从技术上讲,这只是数据更改,而不是算法更改,但这确实意味着您不再需要支持非冲突情况。
-
如果您提到这是后续行动,那就太好了。我认为 The Real Baumann 是一些奇特的算法。你让它变得复杂。您知道哪些路线无法安排,因为它们可能会发生碰撞,尽管这完全取决于驾驶员的速度。您在上一个问题上收到的答案为您提供了解决此问题所需的一切。我们除了把东西带到餐桌上的人。
-
红绿灯会有帮助。
标签: algorithm pseudocode