五年级 · 第 7 讲 · 深度理解(面向学生 / 家长)

枚举法

💡 没有公式不要慌,按顺序、分好类,把所有情况一个不漏、一个不重地数出来,就是枚举法。

🎯找核心概念

这是哪类问题:这一讲专门对付一类“到底有几种”的计数问题:当情况看起来不太多、又没有现成公式可以直接套,或者条件七拼八凑很难一步算出来时,我们就老老实实地把所有满足条件的情况一个一个找出来、数一遍。枚举法就是为“情况有限、但要做到一个不漏、一个不重”的题目量身定做的。它表面笨,其实是最稳、最不容易出错、人人都能上手的万能办法,并且常常是后面学排列组合公式之前的“地基”。

关键词(大白话):

🔍理解本质规律

看得见的规律把枚举想象成查电话簿或查字典:字典里几万个词你一个都不会漏、也不会把同一个词印两遍,靠的就是“按字母顺序排”。枚举也一样——只要你定好一个顺序往下走,眼睛就像手指顺着字典一页页滑,走到头自然就齐了。再想象整理一抽屉袜子:与其乱抓,不如先按颜色分堆(分类),每堆再两只两只配对数清(类内有序),最后把每堆的数目加起来,绝不会多数也不会漏数。
为什么这样解为什么“一个个列”这种笨办法能保证答案对?因为计数的本质就是“给每种情况贴一个号、数到最后一个号”。只要满足条件的情况是有限多个,理论上一定能数完。难点从来不是“数不完”,而是“数乱了”——要么把一种情况数了两遍(重),要么有一种没想到(漏)。而“定顺序”和“先分类”正是专治这两个毛病:有了顺序,你永远知道“下一个该是谁”,不会跳过也不会回头重数;先分类,则把一个大乱摊子切成几个互不重叠、合起来又是全部的小堆,每个小堆都小到能看清。再加上枚举前用性质缩范围(比如末位是 $1$ 的乘积只能由奇数乘奇数得到),需要列的东西就少得能一眼看穿了。

🗂️分类总结题型

题型怎么一眼认出用什么方法
数字与数位枚举g5-c07-p02题目给出关于一个数的各位数字的条件(数字和、对称、上升、首尾差、乘 $2$ 后的数字和等),问满足条件的数有几个。按某一位(常是首位/百位)分类,或先用数字和、进位、整除等性质把数位关系定死,再有序枚举每一位的取值。
凑数与不定方程枚举g5-c07-p07用几种固定的数(砝码、价格、面值)去凑一个目标和,问有几种凑法或能凑出几种不同结果。对较大的那种数从少到多取值分类,每取定一个就看剩下的能不能被其它数凑出(整除判断),逐一验证。
选取与配对枚举g5-c07-p19从一组数里选出若干个、或两两配对,要满足和是某数倍数、和是质数、乘积末位等条件。常用奇偶或整除先缩范围,再固定最小的数开始分情况,逐层往下定其余配对;必要时用补集(选剩下的更少的)来简化。
排列顺序枚举g5-c07-p05给若干个对象排顺序(赛马出场、订报份数、不相邻排灯),问排法有几种。把顺序翻译成一个数或一串 $0/1$,按字典序从小到大逐个列出并逐一检验是否符合条件。
图形与路径枚举g5-c07-p20在方格、网格、连通图形上数涂法、走法或撕法,常带“旋转相同算一种”“不走重复线”等附加规则。先给图形的格子/顶点标号,按一个层次或起步方向分类,沿规则系统地走/拼,重复对称的只留一种。
排序定位与计数g5-c07-p18把一类数(或分数)从小到大排好,问某个数排第几,或第几个是什么。按位数(或整数部分)分段,先数清每一段有多少个,累加到目标所在段,再在段内有序数出准确位置。

✏️举例验证

例 1 g5-c07-p02
题:在所有三位数中,各位数字之和等于 $12$ 的有多少个?
按规律解:按百位数字分类枚举。百位是 $1$ 时,十位加个位要等于 $11$,十位可取 $2\sim 9$(个位相应取 $9\sim 2$),共 $8$ 个;百位是 $2$ 时,后两位和为 $10$,十位取 $1\sim 9$ 共 $9$ 个;百位是 $3$ 时后两位和为 $9$,十位取 $0\sim 9$ 共 $10$ 个;之后百位每增大 $1$,后两位的和就减小 $1$,个数依次是 $9$、$8$、$7$、$6$、$5$、$4$。全部相加:$8+9+10+9+8+7+6+5+4=66$ 个。
为什么对:为什么按百位分类就不会重也不会漏?因为每个三位数的百位是唯一确定的,它必然恰好落进“百位是几”的某一类里,不会同时属于两类(不重),九类合起来又正好是全部三位数(不漏)。每一类里再让十位从小到大走一遍,个位被和锁死,所以类内也滴水不漏。
例 2 g5-c07-p08
题:把黑桃 A~$10$ 与红心 A~$10$ 配成 $10$ 对(A 当作 $1$),两张牌上数的乘积除以 $10$ 余 $1$,能配出几对?
按规律解:乘积除以 $10$ 余 $1$,意思就是乘积的末位(个位)是 $1$。先缩范围:只要有一个因数是偶数,乘积末位就是偶数,绝不可能是 $1$,所以两个数都得是奇数,候选只剩 $1,3,5,7,9$。再看这些奇数两两相乘的末位:$1\times 1=1$(末位 $1$,行)、$3\times 7=21$(末位 $1$,行)、$7\times 3=21$(行)、$9\times 9=81$(行),而带 $5$ 的相乘末位都是 $5$。所以符合的有 $4$ 对。
为什么对:为什么只看末位就够了?因为两个数乘积的末位,只由这两个数各自的末位决定,跟更高位无关。先用“偶数出局”这一刀把范围从 $10$ 个数砍到 $5$ 个奇数,剩下要试的组合就很少,挨个乘一下末位即可,既快又不会漏。
例 3 g5-c07-p19
题:把 $2\sim 9$ 这 $8$ 个数分成 $4$ 对,使每对的和都是质数,共有几种分法?
按规律解:先缩范围:两个数的和如果是大于 $2$ 的质数,必是奇数,而奇数只能由“一奇加一偶”得到,所以每一对都必须一奇一偶。再从最小的数 $2$ 入手分类:能和 $2$ 配成质数的有 $3,5,9$(和为 $5,7,11$)。(a) $2$ 配 $3$:剩下最小是 $4$,$4$ 能配 $7$ 或 $9$,每种再往下定都唯一,得 $2$ 种;(b) $2$ 配 $5$:剩下最小是 $3$,$3$ 配 $4$ 或 $8$,得 $2$ 种;(c) $2$ 配 $9$:剩下最小是 $3$,$3$ 配 $4$ 或 $8$,得 $2$ 种。合计 $2+2+2=6$ 种。
为什么对:为什么总从“当前最小的数”开始定?因为最小的数选择最少、最好控制,先把它钉死,剩下的局面立刻变小。这样一层层往下,每一步都只剩很少几种走法,分支清清楚楚,既不会把同一种分法从不同顺序数两遍,也不会漏掉任何一支。
例 4 g5-c07-p21
题:满足 $\dfrac{1}{a}+\dfrac{1}{b}+\dfrac{1}{c}=\dfrac{3}{4}$ 的整数 $a,b,c$ 能组成多少个不同的有序数组 $(a,b,c)$?
按规律解:先用缩放卡范围:不妨设 $a\le b\le c$,那么 $\dfrac{1}{a}$ 是三个分数里最大的,三个加起来是 $\dfrac34$,所以 $\dfrac{3}{a}\ge\dfrac34$,得 $a\le 4$。逐一枚举 $a$:$a=4$ 时 $b=c=4$;$a=3$ 时解出 $(3,4,6)$ 和 $(3,3,12)$;$a=2$ 时解出 $(2,8,8)$、$(2,6,12)$、$(2,5,20)$。这些是“从小到大”的无序解,最后还原成有序数组:三个都不同(如 $2,6,12$)有 $6$ 种排法,恰有两个相同(如 $4,4,4$ 之外的 $3,3,12$、$2,8,8$)有 $3$ 种排法,三个全同($4,4,4$)有 $1$ 种。合计 $1+3+3+3+6+6=25$ 个。
为什么对:为什么先假设 $a\le b\le c$ 再放缩?因为不加约束直接枚举三个变量会乱成一团、还会重复。设了大小顺序后,最大的分数 $\dfrac1a$ 至少要扛起平均的份额,立刻把 $a$ 锁在 $4$ 以内,枚举量瞬间变小;先求出“无序的骨架解”,最后再按相同数字的个数补回排列数,就能不重不漏地数清所有有序数组。

🌱拓展应用

🛒 生活里的同类问题:

🔄 变形我还认得吗:

🚀 它是后面什么的前置基础:

⚠️常见易错点

🧠思维导图

🔗关联知识点