Algorithm 生成置换组合

Algorithm 生成置换组合,algorithm,Algorithm,如何使用数字组合生成置换。位屏蔽是否有用? 例如: 如果我有N个数字,我想生成M个数字。如何以最小的时间复杂度来实现这一点?首先,您可以编写一个算法来生成集合的所有完整置换,您可以为此编写一个递归函数,请参阅 然后,您可以编写一个算法,从m中生成n个数字的所有集合。您也可以通过下面的元代码递归地执行此操作 generate(n, setOfM) { startingWithFirst = setOfM[0] concatenated with generate(n -1, setOfM[

如何使用数字组合生成置换。位屏蔽是否有用? 例如:
如果我有N个数字,我想生成M个数字。如何以最小的时间复杂度来实现这一点?首先,您可以编写一个算法来生成集合的所有完整置换,您可以为此编写一个递归函数,请参阅

然后,您可以编写一个算法,从m中生成n个数字的所有集合。您也可以通过下面的元代码递归地执行此操作

generate(n, setOfM) {
    startingWithFirst = setOfM[0] concatenated with generate(n -1, setOfM[1..])
    notStartingWithFirst = generate(n, setOfM[1..])
    return startingWithFirst.Union(notStartingWithFirst))
}