枚举法是一种通过逐一列举所有可能情况来解决问题的方法。它适用于总数不多、结构清晰的问题,尤其在组合计数和概率初步中非常实用。
使用枚举法的关键是做到“不重复、不遗漏”。为了达到这个目标,我们通常按照一定的顺序或规则来列举,比如从小到大、按字母顺序、分类讨论等。
例如,从数字1、2、3中任选两个不同的数组成两位数,我们可以按十位数字从小到大依次枚举:十位为1时,个位可以是2或3,得到12、13;十位为2时,个位可以是1或3,得到21、23;十位为3时,个位可以是1或2,得到31、32。这样一共得到6种结果,没有重复也没有遗漏。
在概率问题中,如果所有结果的可能性相同,事件发生的概率就是:
这时,枚举法可以帮助我们准确数出分子和分母。
基本计数原理(加法原理):如果完成一件事有两类不同方案,第一类有种方法,第二类有种方法,则共有种方法。
古典概率公式:若所有结果等可能,则
例题1(基础):用数字1、2、3能组成多少个没有重复数字的两位数?
解题过程:
例题2(进阶):一个口袋中有红球、黄球、蓝球各1个。从中随机摸出两个球,求摸到一红一黄的概率。
解题过程:
我们用容斥原理或直接枚举法计算满足条件的8位数个数(每位只能是1或2,共2^8=256个总数)。
设A_k表示从第k位开始出现连续4个1(即位置k,k+1,k+2,k+3均为1),k=1,2,3,4,5(因8位中最多从第5位开始放4连1)。
对每个A_k:固定4位为1,其余4位可自由取1或2 → 2^4=16个。 但存在重叠(如连续5个1会被多个A_k计数),需去重。
更可靠方法是直接枚举所有含“1111”子串的8位二进制串(字母表{1,2},等价于{0,1}问题,仅符号不同)。
令f(n)为长度为n、不含“1111”的串数,则所求为2^8 - f(8)。
递推:设a_n为长度n、末尾连续1的个数为0,1,2,3且不含“1111”的串数。 定义:
初始(n=1): s0[1]=1(“2”), s1[1]=1(“1”), s2[1]=0, s3[1]=0
递推关系: s0[n] = s0[n-1]+s1[n-1]+s2[n-1]+s3[n-1] (加2) s1[n] = s0[n-1] (加1到以2结尾) s2[n] = s1[n-1] (加1到末尾1个1) s3[n] = s2[n-1] (加1到末尾2个1)
计算: n=2: s0=2, s1=1, s2=1, s3=0 → total=4 n=3: s0=4, s1=2, s2=1, s3=1 → total=8 n=4: s0=8, s1=4, s2=2, s3=1 → total=15(注意:全1“1111”被排除,总可能16,故15正确) n=5: s0=15, s1=8, s2=4, s3=2 → total=29 n=6: s0=29, s1=15, s2=8, s3=4 → total=56 n=7: s0=56, s1=29, s2=15, s3=8 → total=108 n=8: s0=108, s1=56, s2=29, s3=15 → total=208
所以不含“1111”的串数为208,总串数256,故含至少一个“1111”的串数为256−208=48。
答:48个。
用数字1、2、3可以组成多少个不同的两位数(每个数字只能用一次)?