C++基本数学思想——排列组合是什么?

学习排列组合的关键是:你先得非常明确一些基本模型,这些基本模型往往只用很小的数字就能说明,然后再做一些数字大的问题就思路清晰了。

本文篇幅较长,内容包括:

一:P 的由来

二:C 的由来

三:5 个组合数的公式直观解释

四:10 个常见题型和方法

(如果对 P 和 C 的概念定义非常熟悉的同学可直接跳至第四部分直接看题。)

现在开始!

1P 的由来

所谓排列组合,排列在组合之前,咱们要聊的第一个概念是“排列”,排列的英文是 Permutation 或者 Arrangement,因此在数学符号中,用 P 或者 A 表示都可以,二者意思完全一样。

我们常见的 P 右边会跟两个数字(或字母),右下角的数字 n 表示总数,右上角的数字 m 表示抽出的个数。整个符号的意思是“从 n 个人中,有顺序地抽出 m 个人的抽法数”,可以读作“P n 抽 m”。。那么,到底什么叫做有顺序的?我们来举个数字很小的例子:

比如:班里有三名同学,成绩前两名有几种可能性?

咱们可以用乘法原理:选第一名有 3 种可能性,选第二名有 2 中可能性,因为第一名那个人不可能同时又是第二名了,将这两步相乘起来。(如果你不太理解乘法原理,可以看看下图直观列举的表示。)

这个公式需要注意的是:虽然书上每次讲到这个公式时一般以阶乘(factorial)的形式给出,但实际计算中,往往不用阶乘。我的记法是:从大的数字开始往小乘,乘“小的数字那么多”个。

2C 的由来

咱们聊的第二个概念是“组合”,它比排列更常用,组合的英文是 Combination,因此在数学符号中用 C 表示,美国和英国教材中,也常用“长括号”表示组合数。

我们常见的 C 右边会跟两个数字(或字母),右下角的数字 n 表示总数,右上角的数字 m 表示抽出的个数。整个符号的意思是“从 n 个人中,不计顺序地抽出 m 个人的抽法数”,可以读作“C n 抽 m”。那么,到底什么叫做不计顺序的?我们也来举个例子:

比如:班里有三名同学,选出两名代表参加年级会议有几种选法?

哈哈,这就可以用到之前排列数的结论了!就让刚才的第一名和第二名去参加会议。但是,对于参加会议来说,谁是第一谁是第二不重要呀!因此我把原图的红色和蓝色都涂成了黑色,以示无区别。(如下图)

至此,第二步中,第一种和第三种都是 A、B 的组合,完全一样,就会有一些算重的,至于有多少个算重,取决于抽出个数 m 的全排列种数,即 m 的阶乘。(如果你不太理解哪些算重了,可以仔细看看下图中箭头所指的对应关系)

于是,组合数公式就是在排列数公式上除以一个 m!。但实际计算中,往往不用阶乘。我的记法是:从大的数字开始往小乘,乘“小的数字那么多”个,再除以“小的数字开始往小乘,乘小的数字那么多个”。

3组合数的公式直观解释

组合公式Ⅰ

这个公式课内和竞赛都会常常用到。我在刚学的时候把它联想成“做值日”问题,四个同学中,选三名同学做值日就相当于选一名同学放学直接回家。

比如,班里有 A、B、C、D 四个同学,每天要选出三个同学做值日,有几种选法?这个问题对于学过排列组合的同学自然非常简单了,就是 C 4 抽 3,但是,假如问一个没学过排列组合的人,他会怎么想呢?如果想 ABC,ACD……这种就会比较难想,不如去想它的反面:选A、B、C 或 D 放学直接回家,总共就四种。这就能直观的理解这个公式了。

这个公式对于运算 C 10 抽 8 这样的组合数时非常有用,直接转化成 C 10 抽 2 来计算。

组合公式Ⅱ

这个公式课内会提到,但不要求熟练掌握,竞赛会常用。可以把它联想成“约同学玩剧本杀”问题,看看在四个同学中,想约两个同学有几种约法。如果四个人都是普通朋友,看作是相同的 A、B、C、D,那自然有 C 4 抽 2 =6 种约法。

下面我们来点刺激的:假如这四个人中有一个是戏精本精,他最特殊,你会先问他来不来:①如果他来,但你还想一共约两个同学,那么就需要在其他三个同学中再约一个,有 C 3 抽 1 ,共3种方法;

②如果他不来,那你就需要在其他三个同学再约两个,有 C 3 抽 2 共3种方法。

两类相加,表示的意义就是从 4 个同学中约两个同学的情况总数,即公式成立。

这个公式对于处理两个组合数相加问题非常有用,落实在计算上,我把它总结成口诀:上面的数字取大的,底下的数字加一

组合公式Ⅲ

这个公式课内和竞赛都会常常用到。我把它叫做抓兔子问题,想象一个笼子里有两只兔子,抓出来的话有几种抓法?

第一种方法是我去笼子里抓,我在抓的时候就想好是抓 1 只还是抓 2 只,或是抓 0 只(即不抓)。由于先想好了这一点,就会有 C 2 抽 1 和 C 2 抽 2 这些组合数,分别表示按“抓一只”、“抓两只” 分类,每类的情况数;

第二种情况是我把笼子打开,让每只兔子自己选择跳出来或是不跳出来(2 种可能性),每只兔子都是独立的个体,所以可以用乘法原理,总共的情况数是 n 个 2 相乘,即 2 的 n 次方。

两种方法都表示“兔子出来的情况数”,因此一样,即公式得以解释。

这个公式对于处理一系列“底下相同的”组合数相加的问题非常好用,大大节省计算量。而且它与集合、二项式定理等中学数学知识紧密相连,需深入理解。

组合公式Ⅳ

这个公式一般在竞赛中会出现。我把它叫做火车头问题:抽出的一些元素,总有一个打头的,称为火车头,它也是火车的一节,只不过是特殊的一节。

具体来讲,比如说你要在 A、B、C、D、E 这 5 个小球中抽取 3 个小球,咱们可以按“哪个小球是第一个”分类

第一类:A 为火车头,那么还需在后面四个小球中抽取两个小球;

第二类:B 为火车头,那么还需在后面三个小球中抽取两个小球;

第三类:C 为火车头,那么还需在后面两个小球中抽取两个小球。

至于 D 或 E 开头的,就不足“三节车厢”了,故不计算。我们把之前说的三类加起来,就直观地理解了这个公式。

这个公式对于处理一系列“上面相同的”组合数相加的问题非常好用,大大节省计算量。记忆方法是:和为上面下面都加一。

组合公式Ⅴ

这个公式是一个相加和相乘结合的公式,看似复杂,但并不难理解。我对它的理解是:可以想象成班里选几名学生,分男女选和不分男女选情况数一样。

比如说,咱们假设班里有 7 名学生,4 男 3 女。如果选出三个人参加竞赛有几种选法?首先容易想到的是 C 7 抽 3 =35。没错,不过咱们还有一个思路,就是按“男女各多少人”分类讨论。

第一类:0 男 3 女,分别抽取,再乘起来。

第二类:1 男 2 女,分别抽取,再乘起来。

第三类:2 男 1 女,分别抽取,再乘起来。

第四类:3 男 0 女,分别抽取,再乘起来。

这四类是互不重叠的,可用加法原理将其相加。原公式就得以直观理解。

上面 5 个公式都可以代数证明,也可按照我举得例子通俗理解,如果这二者你都很清楚,那排列组合就能融会贯通了。

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值