我正在尝试找到问题的解决方案,我有类似
的问题我应该得到答案为A> B> C> D.
此问题的条件
我需要使用Java Collections找到最佳解决方案。欢迎任何提示/提示。
提前致谢!
答案 0 :(得分:8)
它被称为拓扑排序。 http://en.wikipedia.org/wiki/Topological_sorting
鉴于此,您应该能够自己完成作业。
答案 1 :(得分:1)
我打赌你最近报道了这个班级的图表...
您认为图表如何应用于此?
你能想到一个基于问题输入构建的结构(A> B>,A> D,C> A等)吗?也许是某种有向图...
一旦问题在这样的图表中表达,解决方案将涉及导航该图表......
答案 2 :(得分:0)
您开始将它们放在List
中。该列表将进行排序,因此对于n
对(a, b)
,您可以使用二进制搜索查找a
。如果它已经存在,则跳过,如果不存在,则插入适当的点。自a > b
起,您可以在列表的其余部分使用b
再次执行此操作。希望这有帮助。
答案 3 :(得分:0)
您可以使用输入的Map和一个递归方法来执行此操作,该方法将其答案添加到返回的List中(或者只是在树下降时打印每个节点。)如果您要返回答案,那么 pre < / strong> - 返回列表将阻止答案被反转D-&gt; C-&gt; B-&gt; A完成时(或者你可以在结尾时反复列出()列表。)不要在递归时忘记测试中断条件。 (提示:未找到钥匙)