调整课次结构:前9节重新排序,新建第06课一维数组,后3节不变

This commit is contained in:
chengzi
2026-07-03 15:27:11 +08:00
parent 30f803784a
commit b973fb7825
29 changed files with 1301 additions and 13 deletions

View File

@@ -0,0 +1,145 @@
# 第8课枚举与模拟三级工具降维
> 等级说明:本课使用三级工具帮助解决一级、二级综合问题。
## 教学目标
- 理解枚举算法的核心思想:列举所有可能,逐一验证
- 掌握枚举优化的两个技巧:缩小范围、提前终止
- 理解模拟算法的核心思想:按题目描述一步步翻译成代码
## 核心考点:枚举范围与模拟执行顺序
### 考什么
枚举所有可能并逐一________或按题目规则一步一步更新________。
### 必须理解
枚举三步是确定________、确定合法________、写出验证________。模拟时必须保持题目规定的________顺序。是否使用 `break`取决于题目要________________。
### 核心写法
```cpp
for (int i = ________; i <= ________; i++) {
if (____________________) {
// 记录、计数或输出
}
}
for (int i = 1; i <= ________; i++) {
// ____________________
}
```
### 常见错误
- 枚举范围漏掉端点会怎样________________
- 什么情况下不能找到答案就 `break`________________
- 模拟步骤颠倒是否会影响答案________
### 判断是否掌握
- [ ] 我能确定候选变量和完整范围。
- [ ] 我能写出验证条件。
- [ ] 我能按正确顺序模拟状态变化。
---
## 课堂编程题
### 课堂1鸡兔同笼【适中】
**题目描述:** 笼中只有鸡和兔。输入头数与脚数,输出鸡和兔的数量;没有合法方案时输出 `NONE`
**输入格式:** 输入动物总数和脚的总数。
**输出格式:** 输出鸡的数量和兔的数量,或输出 `NONE`
**数据范围:** 动物总数为 11000脚数为非负整数。
**输入样例:**
```text
10 28
```
**输出样例:**
```text
6 4
```
**解题思路:** 枚举鸡的数量,兔的数量由总数减去鸡数得到,再验证脚数。
**易错提醒:** 枚举范围必须包含 0 和动物总数;题目只需一个方案,找到后可以结束循环。
### 课堂2硬币组合【适中】
**题目描述:** 用 1 元、2 元和 5 元硬币凑出指定金额,要求硬币总数固定。输出所有方案,每行依次输出三种硬币数量。
**输入格式:** 输入目标金额和硬币总数。
**输出格式:** 输出全部合法方案;没有方案时输出 `NONE`
**数据范围:** 目标金额和硬币总数均为 1100。
**输入样例:**
```text
10 4
```
**输出样例:**
```text
1 2 1
```
**解题思路:** 枚举 1 元和 2 元硬币数量5 元硬币数量由总数直接计算,再检查金额。
**易错提醒:** 第三种硬币无需再枚举;题目要求全部方案,找到后不能提前结束。
### 课堂3斐波那契数列【适中】
**题目描述:** 数列前两项为 1之后每项等于前两项之和。输入项数输出前若干项。
**输入格式:** 输入需要输出的项数。
**输出格式:** 输出数列前若干项,以空格分隔。
**数据范围:** 项数为 145。
**输入样例:**
```text
6
```
**输出样例:**
```text
1 1 2 3 5 8
```
**解题思路:** 用两个变量保存连续两项;先计算下一项,再按顺序更新两个变量。
**易错提醒:** 更新顺序不能颠倒,必须先用旧值计算下一项。
### 课堂4交通灯状态【适中】
**题目描述:** 交通灯按"绿灯 30 秒、黄灯 5 秒、红灯 25 秒"循环。第 1 秒为绿灯。输入秒数,输出当时颜色以及该颜色已经持续的秒数。
**输入格式:** 输入一个正整数,表示经过的秒数。
**输出格式:** 输出颜色和当前颜色已持续的秒数。
**数据范围:** 秒数不超过十亿。
**输入样例:**
```text
34
```
**输出样例:**
```text
YELLOW 4
```
**解题思路:** 一个周期共 60 秒,将时间映射到 160再按三个区间判断。
**易错提醒:** 第 60 秒仍在本周期,第 61 秒才回到绿灯第 1 秒。
---
## 课后作业
> 请完成本课对应的课后作业,见编程题文件。