17c2:懂的人都懂:很多人卡在这里,其实是理解偏了
17c2:懂的人都懂:很多人卡在这里,其实是理解偏了

标题看起来像个符号谜,但其实它代表了组合学里一个非常基础、却常被误解的概念:C(17,2),也就是从17个不同元素中选2个的组合数。很多人在碰到这类问题时容易卡住,不是因为计算难,而是因为对“顺序是否重要”“是否允许重复”这些前提没弄清楚。下面把这件看似小事,拆成能马上用的思路和技巧。
一眼看懂:为什么 C(17,2) = 136 直观解释:先随便选第一个人,有17种选法;再选第二个人还有16种。所以看起来有17 × 16 = 272种“有顺序”的选法。但在组合里,选A再选B和先选B再选A被视为同一组(顺序不重要),每一组被算了两次,所以要除以2,得到 17 × 16 ÷ 2 = 136。数学上写作: C(17,2) = 17! / (2! × 15!) = 136
常见误区(及如何避免)
- 把“排列”和“组合”混为一谈。排列(order matters)不除以k!;组合(order doesn’t matter)需要除以k!。碰到题目先问自己一句:“结果里 AB 和 BA 算不算不一样?”
- 忘了是否允许重复。允许重复的组合问题(例如从3种口味里选两个球,且可以重复)用的是“带重组合”公式:C(n+k-1, k)。
- 直接套公式却不看题目背景。有时候题目含语境:比如选队长和副队长就是排列(顺序有意义)。
- 盲目用计算器或浮点法,面对大数会出现精度或溢出问题。可以用整除的逐步相乘法或语言内置函数(Python 的 math.comb)来稳妥计算大组合数。
几个实用技巧
- 对称性质:C(n,k) = C(n, n−k)。当k大于n/2时,可以换成更小的n−k计算,节省步骤。
- 逐项相乘再整除:计算 C(n,k) 时,用 product_{i=1..k} (n−i+1)/i 的方式,能减少中间极大数的出现,也利于在程序里实现。
- 把问题场景具体化:把抽象“选2个”变成“握手问题”“配对问题”“选两人组队”,常常能迅速判断是否是组合问题。
真实例子,帮助记忆
- 握手问题:房间里17人,每两人握一次手,共有多少次握手?答案是 C(17,2)=136,因为每次握手是两人一组,顺序无意义。
- 彩票问题:从49个号码选6个并不关心顺序,就是 C(49,6)。
- 排队与选职位不同:从17人中挑出一名队长和一名副队长,是排列问题,计算为 17 × 16 = 272(顺序有意义)。
练练手(带答案) 1) 从10名候选人中选3人组成委员会(无职位区分),有多少种可能? 答:C(10,3)=120。 2) 从10名候选人中选主席、副主席(职位不同),有多少种? 答:10 × 9 = 90。 3) 有5种口味的糖果,想选2颗可以重复,多少种不同的“组合味道”? 答:C(5+2−1,2)=C(6,2)=15。
有用吗?