基于循环的排列组合

C(100, 5)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var size = 100, count = 0;
for (let i1 = 0; i1 < size; ++i1) {
for (let i2 = i1+1; i2 < size; ++i2) {
for (let i3 = i2+1; i3 < size; ++i3) {
for (let i4 = i3+1; i4 < size; ++i4) {
for (let i5 = i4+1; i5 < size; ++i5) {
++count;
//console.log(i1 + ' ' + i2 + ' ' + i3 + ' ' + i4 + ' ' + i5 )
}
}
}
}
}
console.log(count);
// 结果
C(100, 5) -> 75287520 VM241:10
A(100, 5) -> 9034502400.0

基于API方法的排列组合

  1. 调用 scipy 计算排列组合的具体数值

    1
    from scipy.special import comb, perm

    排列数
    A(3, 2)=6

    1
    perm(3, 2)

    6.0
    组合数
    C(3, 2)=3

    1
    comb(3, 2)

    3.0

  2. 调用 itertools 获取排列组合的全部情况数

    1
    2
    from itertools import combinations, permutations
    permutations([1, 2, 3], 2)

    可迭代对象
    <itertools.permutations at 0x7febfd880fc0>

    排列数

    1
    list(permutations([1, 2, 3], 2))

    [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]

    组合数

    1
    list(combinations([1, 2, 3], 2))

    [(1, 2), (1, 3), (2, 3)]

  • Github Gist 2018-11-03 11:46
  • 更新: 2019-05-19 22:46:21