【发布时间】:2015-01-11 20:12:55
【问题描述】:
当我有一个给定的序列 s=(a,b,c,d,e...) - 以非递减顺序排序时,我遇到了问题。我的工作是开发一种算法,该算法将按字典顺序生成所有可能的排列 - 以反转的 s(最高顺序)结束。
诀窍是:我无法将任何两个元素相互比较。无论元素值如何,所有操作都必须“自动”完成。
【问题讨论】:
-
要么需要比较元素来判断哪些相等,要么必须允许输出重复的字符串。
-
好的,然后逐步遍历 1..n 的排列,并且仅在输出时将排列应用于 s。但也许这违反了这个问题的精神。为什么会有这种限制?
-
好的,我输出重复的字符串,以防s中有相等的元素。
-
@harold :我不明白你的解决方案......你能更准确吗?
-
@maciek 在一个额外的数组中生成 1..n 的所有排列,您可以按照标准方式执行此操作,因为不涉及 s 中的元素,因此不适用比较限制。然后对于每一个排列,用它来构造来自s的元素的对应排列。
标签: algorithm permutation discrete-mathematics lexicographic