在线教材正文
组合计数研究“有多少种可能”。它不一定要求列出所有结果,而是通过结构分析得到数量。密码设计、测试用例生成、概率计算和算法复杂度分析都离不开计数思想。
排列强调顺序,组合不强调顺序。判断一个问题使用排列还是组合,关键是看交换对象位置后结果是否发生变化。若位置变化产生新的结果,通常使用排列;若只是选出对象集合,则使用组合。
容斥原理用于处理多个条件之间存在重叠的计数问题。直接相加会重复计算交集,因此需要加减交替修正。它体现了离散数学中“先放宽条件,再逐步校正”的典型思维。
递推关系通过前后项之间的联系描述数量变化。许多算法问题都可以转化为递推形式,例如斐波那契数列、汉诺塔问题、动态规划状态转移等。