测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
B69

初识枚举:用循环逐一检验

引入

章前总览 第14章把分支和循环合在一起解题,并初步认识枚举(穷举):候选答案很多、又不好用公式直接排除时,就用循环一个个检查。

逻辑链条:

  • C1:什么是枚举
  • C2:生活例子——分五角星
  • C3:程序里怎么写

1 C1. 枚举算法是什么

算法是用程序解题的步骤。有些步骤套路固定,就起了专门名字;枚举就是其中一种。

核心想法

  • 问题可能有大量候选答案(或中间状态),又难以用逻辑直接砍掉大部分。
  • 策略:逐一检验每一个候选。
  • 数学里常叫列举法;编程里通俗说就是:用循环检查某个量的每一个取值。

2 C2. 例子:10 个五角星分 2 堆

每堆至少 2 个,两堆不区分。约定两堆数量 a≤b,避免重复。

列举

  • 合法分法:2+8、3+7、4+6、5+5,共 4 种。
  • 若再写 6+4、7+3、8+2,只是把两堆对调,算重复。
  • 约定顺序(如 a≤b)是枚举时避免重复的常用手段。

3 C3. 程序里的枚举

一个量:一层 for/while;多个量的组合:多重循环(后面再学)。

</> 骨架

for (候选值 从最小值 到 最大值) {
    if (这个候选满足题意)
        输出 或 计数++;
}
  • 本章案例:找因数、面积对应长宽、美丽数字计数,都是“枚举 + 判断”。
小结

记住一句:

枚举 = 循环扫候选 + if 筛合法答案
注意约定顺序,避免重复计数
里程碑达成:

下一节三个案例:找因数、长方形种数、美丽数字。