【发布时间】:2017-03-14 22:13:55
【问题描述】:
我在 A 和 B 之间有一段旅程,有不同的路径来结束它。路径由初始公里和最终公里定义:
path 0 -> (0, 10)
path 1 -> (10, 25)
path 2 -> (10, 15)
path 3 -> (15, 20)
path 4 -> (20, 30)
path 5 -> (25, 35)
path 6 -> (30, 35)
path 7 -> (35, 40)
path 8 -> (40, 50)
如您所见,有些路径是重叠的。其实我们可以得到重叠路径的列表:
path 0 -> NONE
path 1 -> 2,3,4
path 2 -> 1
path 3 -> 1
path 4 -> 1,5
path 5 -> 4,6
path 6 -> 5
path 7 -> NONE
path 8 -> NONE
我想要得到的是所有可能的路线,路线中没有重叠的路径,但应该只走一条。有没有可以解决这个问题的算法?我尝试使用递归或使用堆栈之类的辅助数据结构来实现,但我发现很难获得包含最终可能路线的列表,我也尝试解决问题并尝试获得丢弃的路径列表,这是:
route 0-2-3-4-6-7-8 -> [1,5] discarded
route 0-2-3-5-7-8 -> [1,4,6] discarded
route 0-1-6-7-8 -> [2,3,4,5] discarded
route 0-1-5-7-8 -> [2,3,4,6] discarded
【问题讨论】:
标签: algorithm recursion data-structures routing overlap