需要算法进行序列计算

我试图找到一个问题的解决方案,我有类似的东西 A> B. B> C. B> D. C> D. 我应该得到答案为A> B> C> D. 这个问题的条件 输出将涉及所有元素。 这个问题不会有任何虚假的输入。 例如,(A> B)(C> D)是一个伪输入,因为我们无法确定输出。 输入可以是任何大小但从不虚假,并且总会有问题的解决方案。 我需要使用Java Collections找到最佳解决方案。欢迎任何提示/提示。 提前致谢!     
已邀请:
它被称为拓扑排序。 http://en.wikipedia.org/wiki/Topological_sorting 鉴于此,您应该能够自己完成作业。     
我打赌你最近在本课程中介绍了图表...... 您如何看待图表可以在这里应用? 你能想到一个基于问题输入建立的结构(A> B>,A> D,C> A等)?也许某种有向图... 一旦问题在这样的图表中表达,解决方案将涉及导航该图表......     
你开始将它们放入
List
。列表将被排序,因此对于第1/1对
(a, b)
,您使用二进制搜索查找
a
。如果它已经存在,则跳过,如果没有,则插入适当的点。从
a > b
开始,你在列表的剩余部分用
b
再次做到这一点。希望这有帮助。     
您可以使用输入的Map和递归方法来执行此操作,该方法将其答案添加到返回的List中(或者只是在每个节点下降时打印它们。)如果您要返回答案,则预先挂起到返回的列表将防止答案被反转D-> C-> B-> A完成后(或者你可以在结尾处反复列出()列表。)不要忘记在递归时测试中断条件。 (提示:找不到钥匙)     

要回复问题请先登录注册