计算排列的算法

时间:2015-06-25 13:22:06

标签: algorithm language-agnostic

我知道Heap算法可以计算给定序列的排列,但是如果我想计算给定序列N的k元素子集的排列怎么办?

我这次想到的解决方案是一个回溯的解决方案,但每次删除一个子元素并递归调用置换函数时,它需要生成一个新的子元素序列。这听起来很昂贵,我想知道是否有更好的解决方案

1 个答案:

答案 0 :(得分:0)

  1. 使用算法从N的集合生成大小为K的组合。 (从问题中选择任何一个:Algorithm to return all combinations of k elements from n)。
  2. 使用结果,应用Heap's Algorithm来创建此k元素子集(或另一个Algorithm to generate all possible permutations of a list)的所有排列。
  3. 生成大小为K的下一个子集并重复(步骤1和2),直到枚举了所有大小为K的子集。