使用迭代的字符串的所有排列
排列,也称为“排列数”或“顺序”,是将有序列表 S 的元素重新排列成与 S 本身一一对应的关系。长度为 n 的字符串有 n!排列(来源: Mathword )
以下是字符串 ABC 的排列。 中航 ACB 北汽 BCA CBA CAB
我们已经讨论了打印排列的不同递归方法【这里的 T0】和【这里的 T2】。
如何迭代打印所有排列? 一个简单的解决方案使用 n-1 个元素的排列来生成 n 个元素的排列。
例如,让我们看看如何使用大小为 2 的置换生成大小为 3 的置换。
两个元素的排列是 1 2 和 2 1。 三个元素的排列可以通过在大小为 2 的所有排列中的不同位置插入 3 来获得。 在 1 2 的不同位置插入 3 会导致 1 2 3、1 3 2 和 3 1 2。 在 2 1 的不同位置插入 3 会导致 2 1 3、2 3 1 和 3 2 1。
为了生成大小为 4 的置换,我们考虑大小为 3 的所有上述六个置换,并在每个置换的不同位置插入 4。
一个有效的解决方案是使用约翰逊和特罗特算法迭代生成所有置换。
版权属于:月萌API www.moonapi.com,转载请注明出处