把过程一步步走出来
这一课只练一件事:在有限的 里把每个可能都试一遍,并按题意做 。这就是 和 。完成四个小任务:选出范围,走一遍 1 到 3 数偶数,再对照 。这里不会在浏览器里运行 C++。
任务 1:先确定从哪数到哪
要把 1 到 3 里的偶数个数数出来。先判断该用 :在有限范围内每个都试。再判断过程中要记住的 是什么。点不认识的词可看基础解释。
必会:能写有限枚举,能说出要记住“已经数到几个偶数”。这里不会在浏览器里运行 C++,只练习选择。
1 到 3 该怎么找偶数?枚举范围 · 必会
过程中要记住什么?状态更新 · 必会
任务 2:走一遍 1 到 3
最小示例:for (int i = 1; i <= n; i++),若 i % 2 == 0 就把 evenCount 加一。按顺序点三步,看 怎么变。这里不会在浏览器里运行 C++。
必会:能画状态变化。边界:只看 1 和 3 会漏掉偶数 2;每个 i 都要走到。
- int evenCount = 0;
- for (int i = 1; i <= n; i++) {
- if (i % 2 == 0) evenCount++;
- }
三步对照走完了,现在亲手把这一步敲出来。枚举里最容易漏的就是判断:只有 的条件成立时才让计数加一,条件用 写成 i % 2 == 0 来判断偶数。下面是只读脚手架,只留一空给你敲键盘。
- int evenCount = 0;
- for (int i = 1; i <= n; i++) {
- // 只有偶数才让计数加一
- }
- // n = 3 时 evenCount 是 1
for (int i = 1; i <= n; i++) { if (i % 2 == 0) evenCount++; } // 只有偶数才加一
任务 3:模拟对,还要避免漏分支
建议掌握: 就是按题意一步步更新状态。必会还包括对照 :漏掉 i=2,偶数个数就会少 1。
必会 / 建议掌握 / 拓展:必会是有限枚举、画状态、不漏分支。用 for 从 1 到 n 并对照样例是建议掌握。搜索树、DFS、剪枝和递归枚举是拓展,现在不用当硬门槛。规模:n 大约 1000 时,每个 i 走一步大约一千次,CSP-J 1 秒通常能过;不必先上搜索。
- int evenCount = 0;
- for (int i = 1; i <= n; i++) {
- if (i % 2 == 0) evenCount++;
- }
先选出模拟该怎么做:
再选出漏掉 i=2 会怎样:
任务 4:随机小测,看看你是否真的懂了
每次从本课题库抽出三道不同的选择题。题目与解析已通过校验,答完后看解析,不要只看分数;拿不准就回到对应任务再看一遍。