如何使用数字组合生成排列。可以使用位掩码吗?
例如:
如果我有N个数字,我想生成一些M位数。如何以最小的时间复杂度完成
答案 0 :(得分:0)
首先,您可以编写一个算法来生成集合的所有完整排列(您可以为此编写递归函数,请参阅Algorithm to generate all possible permutations of a list?)。
然后,您可以编写一个算法来生成m中所有n个数字的集合。你也可以递归地执行此操作,下面是元代码。
generate(n, setOfM) {
startingWithFirst = setOfM[0] concatenated with generate(n -1, setOfM[1..])
notStartingWithFirst = generate(n, setOfM[1..])
return startingWithFirst.Union(notStartingWithFirst))
}