需要算法进行序列计算

时间:2010-02-11 13:45:35

标签: java data-structures analytical

我正在尝试找到问题的解决方案,我有类似

的问题
  1. A>乙
  2. B> ç
  3. B> d
  4. C> d
  5. 我应该得到答案为A> B> C> D.

    此问题的条件

    1. 输出将涉及所有元素。
    2. 问题不会有任何虚假输入。 例如,(A> B)(C> D)是伪造的输入,因为我们无法确定输出。
    3. 输入可以是任何大小但从不虚假,并且总会有问题的解决方案。
    4. 我需要使用Java Collections找到最佳解决方案。欢迎任何提示/提示。

      提前致谢!

4 个答案:

答案 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完成时(或者你可以在结尾时反复列出()列表。)不要在递归时忘记测试中断条件。 (提示:未找到钥匙)