algorithm - 计算 $2n$ 元素可以配对多少种方式的更快方法?

标签 algorithm combinatorics discrete-mathematics

所以问题在于 2n 元素有多少种配对方式,我的方法是将所有奇数相乘小于 2n

(2n-1)*(2n-3)*...*1

但我的教授声称在算法意义上可以更快地完成,但我真的不知道这样做的方法。有什么提示吗?谢谢!

最佳答案

更新:这可能不是您要问的:

您的问题改写为:从一组 2n 个元素中选择两个元素有多少种方法?也称为组合,二项式系数或选择数,阅读 "n choose k" .

您可以采用公式 n!/(k! * (n - k)!),将n替换为2n,然后代数化简为(2n - 1) * n:

#!/usr/bin/env python
# coding: utf-8

def pairs(n):
    return (2 * n - 1) * n

# there is only one pair for an 2n element set {0, 1}
print(pairs(1)) # prints 1

# pairs of {0, 1, 2, 3} = {0, 1}, {0, 2}, {0, 3}, {1, 2}, {1, 3}, {2, 3}
print(pairs(2)) # prints 6

关于algorithm - 计算 $2n$ 元素可以配对多少种方式的更快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38126007/

相关文章:

algorithm - 有没有比Dijkstra算法更好的以事故总数为参数的最短安全路径算法?

python - 第 k 个排列的第 i 个元素

python - 组合,最短路径算法和Python

java - java中的包含和排除原理

algorithm - 解决整数序列问题的通用算法是什么?

algorithm - 如何使用 PartialOrdering 对集合进行排序?

c++ - 分离轴定理 : Calculating the MTV for Polygon & Line Segment

algorithm - 较小图上的图同构但大量测试

c - C中所有可能的组合

c++ - 我如何使用 BIT 解决这个问题?