PYTHON KNOWLEDGE · 17
计数原理、组合数与计算几何基础
明确有序/无序、互斥/分步与几何退化边界,再把公式转为稳定程序。
GESP 8 级
01 · FORMAL DEFINITION
正式定义
加法原理用于互斥方案分类求和,乘法原理用于依次完成步骤求积;排列关心顺序,组合不关心顺序。计算几何用坐标、向量、距离和方向关系把图形条件转成数值判定。
02 · MUST KNOW
学完这一章,必须说清楚的规则
- 01
A(n,m)=n!/(n-m)!,C(n,m)=n!/(m!(n-m)!),并有 C(n,m)=C(n,n-m)。
- 02
杨辉三角递推 C(n,m)=C(n-1,m-1)+C(n-1,m),边界 C(n,0)=C(n,n)=1。
- 03
取模下的组合数算法取决于 n、模数是否为质数、查询次数和是否允许预处理。
- 04
距离比较应优先比较平方,避免不必要的 sqrt 和浮点误差。
- 05
三角形必须满足任意两边之和大于第三边;共线、重合、零长度是几何边界。
- 06
浮点比较应按题目误差使用容差;整数坐标能用叉积时优先保持整数计算。
03 · RUNNABLE EXAMPLE
可运行示例与因果解释
def combinations(n, m):
m = min(m, n - m)
result = 1
for i in range(1, m + 1):
result = result * (n - m + i) // i
return result
print(combinations(10, 3))COMMON PITFALLS
常见误区
- 未判断顺序是否重要就套排列组合公式
- 模意义下直接做普通除法
- 浮点数直接用 ==
- 漏掉共线或退化图形
SCOPE & BOUNDARIES
适用边界
- 概率需要在计数结果上再建立样本空间,不等同于组合数本身。
- 复杂计算几何涉及方向、相交、凸包等更多主题,本章只覆盖课程实际使用的基础判定。