【发布时间】:2015-10-14 00:42:09
【问题描述】:
我正在尝试编写一个程序,该程序可以使用 Johnson-Trotter 方法生成具有不同数量元素的排列。我仍然对如何准确地获得排列感到困惑。对于 5 个元素,我只能做到这一点,然后我就卡住了。我并不是要求所有这些都只是更多,所以我可以把模式写下来。
1 2 3 4 5
1 2 3 5 4
1 2 5 3 4
1 5 2 3 4
5 1 2 3 4
【问题讨论】:
标签: permutation
我正在尝试编写一个程序,该程序可以使用 Johnson-Trotter 方法生成具有不同数量元素的排列。我仍然对如何准确地获得排列感到困惑。对于 5 个元素,我只能做到这一点,然后我就卡住了。我并不是要求所有这些都只是更多,所以我可以把模式写下来。
1 2 3 4 5
1 2 3 5 4
1 2 5 3 4
1 5 2 3 4
5 1 2 3 4
【问题讨论】:
标签: permutation
我找到了以下页面:
http://introcs.cs.princeton.edu/java/23recursion/JohnsonTrotter.java.html
试着一步步运行这个Java程序,肯定会有很大帮助...
【讨论】:
我在卡片融合游戏中使用了 Johnson-Trotter 算法。上面提到的princeton.edu 链接被广泛引用,但相当混乱。而且我看到的代码要么是递归的(很糟糕),要么是低效的。我将它重写为迭代器,它在我的游戏中运行良好。在这里查看我的另一篇文章:https://stackoverflow.com/a/28241384/4266886 带有(非常短的)代码。如果我能提供进一步帮助,请告诉我。
【讨论】: