排列组合算法[Python]

两种排列组合算法 一个是在Edx课上看到的,一个是Python的源码 通过二进制中“1”所在位置的可能性来确定数组中的索引位置,进而求得所有排列组合 首先确定组合的数量是2的N次方个,然后循环2^N, 每个数字即代表一种可能。 比如数组长度是5的情况下,我们一共有2^5种可能,第 1 种可能 对应的二进制为 0 0 0 0 1,第 5 种 对应的是 0 1 0 0 1. 其次既是如何把对应位置的二进制转化成对应数组的索引位置,比如上例中 第 5 种可能 即为 5 转换的二进制:0 1 0 0 1,那么它对应的数据应该是数组种的 第二位和最后一位 算法中,通过 (i >> j) % 2 == 1 来确定 当前二进制位是否为 1,在此就不赘述了。 def powerSet(items): N = len(items) # enumerate the 2**N possible combinations for i in range(2**N): combo = [] for j in range(N): # test bit jth of integer i # test bit jth of integer i # >>j....

March 11, 2017 · 4 min · 706 words · Eric Yang