化繁为简:八个人握手,先看两个人
先只看两个人,再让人一个一个加进来:新来的人前面有几个人,就新增几次握手。再换一种算法,看清“每人登记”以后为什么要除以 2。
题目
8 名同学见面,每两人之间都握手一次,不与自己握手。大家一共握手多少次?
答案:一共握手 28 次。
一句话:让人一个一个加进来。新来的人前面有几个人,就新增几次握手,全部加起来就是答案。
先看人一个一个加进来。讲解分成六小段,每段讲完会自动停下,留一个“想一想”;想好了再点“继续讲解”。听完后切到“我自己试”,换一个人数,再把握手改成互送卡片试一试。
下面几节是动画里讲过的内容,写成文字方便以后复查。只需要会:加法、乘法、除法。不用先学排列组合的公式。
1. 先数小的:2 个人、3 个人、4 个人
按来的先后,把同学叫作第 1 个人、第 2 个人……
- 2 个人: 只有第 1 个人和第 2 个人这一次,一共 1 次。
- 第 3 个人来了: 原来那 1 次还在,不用再算。他要和前面的 2 个人各握一次,新增 2 次,一共 3 次。
- 第 4 个人来了: 他要和前面的 3 个人各握一次,新增 3 次,一共 6 次。
| 人数 | 新来的人新增几次 | 一共几次 |
|---|---|---|
| 2 | 1 | 1 |
| 3 | 2 | 3 |
| 4 | 3 | 6 |
要带走的不是 1、3、6 这几个数,而是这句话:新来的人前面有几个人,就新增几次握手。 原来的人之间握过的手,不用再算。
2. 一直加到 8 个人
第 5 个人新增 4 次,第 6 个人新增 5 次,第 7 个人新增 6 次,第 8 个人新增 7 次。把每次新增的全部加起来:
所以 8 个人一共握手 28 次。
3. 换一种算法:每个人自己登记
人再多一些,上面那串加法会很长。换个办法:让每个人自己登记“我和谁握过手”。
每个人都和另外 7 个人握手,所以每人登记 7 条。8 个人一共登记:
56 还不是答案。 看第 1 个人和第 2 个人的那一次握手:第 1 个人记了一条,第 2 个人也记了一条——同一次握手被记了两遍。每一次握手都是这样,恰好被记两遍。所以要除以 2:
和一个一个加出来的 28 次对上了。
4. 换一个人数,还能这样算吗
能。两种算法只用到题目里的一句话:每两个人恰好握手一次。 不管来了多少人,新来的人总要和前面每个人各握一次;每一次握手,也总是恰好被两个人登记。
用“人数”来说,就是:
什么时候不能这样算
如果有人没握手,或者有两个人握了两次,“每两个人恰好一次”就不成立了。这时候要按实际发生的握手,重新数。
下次遇到“数量很大”的题
先把数量变小,但是题目的规矩一条也不能丢——这里是“每两人一次、不和自己握手”。在小的情形里看清“多一个,会多出什么”,再回到大的。
检查自己是否看懂
8 个人互送卡片:每人给另外 7 个人各送一张,自己不送给自己。一共送出多少张?能照搬握手的算法,也除以 2 吗?
先比一比:“第 1 个人送给第 2 个人”和“第 2 个人送给第 1 个人”,是不是同一件事?
查看答案与理由
56 张,不除以 2。第 1 个人送给第 2 个人的一张,和第 2 个人送给第 1 个人的一张,是两张不同的卡片。按送卡片的人来数,每张只记在一个人名下,没有哪一张被数了两遍。
要不要除以 2,要看同一件事是不是被数了两遍,和题目里有没有出现“两个人”无关。