Scratch枚举训练

从基础到进阶的5个经典题目,逐步掌握枚举算法与计算思维

难度递增 ★★ ★★★ ★★★★

1 基础数字组合

难度:☆☆☆☆

目标

找出所有由1、2、3、4组成的不重复三位数

要求

  • 使用三层嵌套循环(百位、十位、个位)
  • 每个数字在百位、十位、个位不重复
  • 显示所有符合条件的三位数

教学重点

基础循环枚举、数字不重复条件、循环嵌套结构

提示:从1-4分别作为百位、十位、个位,但需要确保三个数字互不相同

预期结果: 24个不重复的三位数

123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432

Scratch实现要点: 使用三个变量分别表示百位、十位、个位,三层循环嵌套,添加条件判断确保三个数字不同。

2 简单条件筛选

难度:★★☆☆☆

目标

从1-9中找出所有三位数,要求百位+十位+个位=12

要求

  • 使用三层循环(百位1-9,十位0-9,个位0-9)
  • 计算每个数字的各位和
  • 只显示满足和=12的数字
  • 统计满足条件的数字数量

教学重点

条件判断、变量求和、计数器使用、数字分解

提示:注意百位不能为0,三位数的范围是100-999

示例结果:

129(1+2+9=12), 138(1+3+8=12), 147, 156, 165, 174, 183, 192, 219, 228, 237, ... 共73个三位数

关键技巧: 在循环内部计算各位数字之和,用条件判断筛选符合要求的数字。

3 复杂条件枚举

难度:★★★☆☆

目标

找出所有水仙花数(三位数,各位数字立方和等于自身)

要求

  • 枚举100-999的所有三位数
  • 分离出百位、十位、个位数字
  • 判断是否满足:百位³+十位³+个位³=原数
  • 记录并显示所有水仙花数

教学重点

数学运算、数字分离算法、复杂条件判断、幂运算应用

提示:可以使用"除法"和"取余"运算分离各位数字,注意立方运算的实现

正确答案:

153, 370, 371, 407

验证示例:

153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153

370 = 3³ + 7³ + 0³ = 27 + 343 + 0 = 370

4 优化枚举

难度:★★★★

目标

找出100以内满足a²+b²=c²的所有正整数组合(a,b,c)

要求

  • a < b < c ≤ 100
  • 避免重复组合(如3,4,5和4,3,5视为相同)
  • 显示所有勾股数组合
  • 统计组合数量

教学重点

枚举优化策略、避免重复计算、多重条件判断、算法效率

提示:通过设置a

示例结果:

(3,4,5), (5,12,13), (6,8,10), (7,24,25), (8,15,17), (9,12,15), (9,40,41), (10,24,26), ... 共52组勾股数

优化技巧: 设置a从1到98,b从a+1到99,c从b+1到100,可以避免重复并提高效率。

5 综合应用

难度:★★★★★

目标

解决"百钱百鸡"问题:公鸡5文钱1只,母鸡3文钱1只,小鸡1文钱3只,用100文钱买100只鸡

要求

  • 枚举所有可能的公鸡、母鸡、小鸡数量组合
  • 满足:公鸡+母鸡+小鸡=100只
  • 满足:5×公鸡+3×母鸡+小鸡÷3=100文
  • 小鸡数量必须是3的倍数
  • 显示所有可行方案

教学重点

复杂约束条件、整数除法处理、多个变量枚举、实际问题建模

提示:小鸡数量必须是3的倍数,可以减少枚举范围。公鸡最多20只,母鸡最多33只。

正确答案: 4种方案

1. 公鸡0只,母鸡25只,小鸡75只

2. 公鸡4只,母鸡18只,小鸡78只

3. 公鸡8只,母鸡11只,小鸡81只

4. 公鸡12只,母鸡4只,小鸡84只

验证示例: 方案2:4只公鸡(20文) + 18只母鸡(54文) + 78只小鸡(26文) = 100只鸡(100文)

教学建议与知识点递进

课时安排(建议3-4课时)

第1课时:题目1-2,掌握基础枚举结构和条件判断

第2课时:题目3,学习数字处理和复杂条件

第3课时:题目4-5,学习枚举优化和综合应用

关键知识点递进

1. 基础循环嵌套 → 2. 简单条件判断 → 3. 数学运算应用 → 4. 枚举优化策略 → 5. 多约束综合问题

从易到难,循序渐进,每个题目解决一个核心问题

扩展挑战

• 让学有余力的学生尝试优化算法效率

• 设计自己的枚举问题

• 比较枚举法与其他算法的优劣

• 尝试用更少的循环次数解决相同问题

教学提示

1. 鼓励学生从最简单的暴力枚举开始,再思考优化方法

2. 引导学生发现循环中的重复计算,尝试减少循环次数

3. 强调实际问题的数学建模过程,将问题转化为程序可处理的形式

4. 使用Scratch的"列表"功能存储和显示结果,增强可视化效果