评分标准模式(MS Pattern)
伪代码题通用评分模式
结构分(M marks — Method)
| 类型 | 常见 M 点 | 分值 |
|------|-----------|------|
| 搜索/排序 | 正确设置循环/边界 | 1 |
| ADT 操作 | 正确检查满/空条件 | 1 |
| 递归 | 正确识别 base case | 1 |
| 链表 | 正确声明 Node 结构 | 1 |
执行分(A marks — Accuracy)
| 类型 | 常见 A 点 | 分值 |
|------|-----------|------|
| 搜索 | 正确的比较和区间更新 | 1-2 |
| 排序 | 正确的元素移动/插入 | 1-2 |
| Stack | 正确的指针操作顺序 | 1-2 |
| Queue | 正确的 Front/Rear 管理 | 1-2 |
| 递归 | trace table 值正确 | 1-2 |
理解分(B marks — Breadth)
| 类型 | 常见 B 点 | 分值 |
|------|-----------|------|
| 边界 | 处理未找到/空结构的情况 | 1 |
| 效率 | 理解算法的复杂度 | 1 |
| 对比 | 与另一种算法对比 | 1 |
关键词与指令词
| 指令词 | 要求 | 常见陷阱 |
|--------|------|----------|
| Write | 写出完整伪代码 | 忘记声明变量 |
| Complete | 填空完成伪代码 | 忽略上下文提供的变量名 |
| Trace | 填写执行表格 | 调用顺序错误 |
| State | 直接陈述(如 Big O) | 不需要解释 |
| Explain | 解释原理 | 只说名字不给解释不得分 |
| Describe | 描述特征 | 至少 2-3 个特征 |
| Compare | 比较异同 | 必须说清区别 |
MS 中的特殊规则
Follow-through(FT)
-
如果 A 部分的排序结果错了,但 B 部分基于 A 的(错误)结果正确执行了操作,B 部分仍然可以得分
-
在 linked list 题中:如果插入位置找错了,但 pointer 更新逻辑正确,可以得到 pointer 操作分
Error Carried Forward(ECF)
- 上一问的答案用于下一问,即使上一问的答案错了,只要下一问的方法正确,就可以给分
伪代码的宽容度
-
MS 通常接受多种等价的伪代码写法
-
变量名不必完全匹配,但要有意义
-
不需要严格的语法,逻辑正确即可
典型扣分点
| 错误类型 | 扣分 |
|----------|------|
| 当写伪代码时未声明变量 | 通常扣 1 分 |
| 循环条件边界错误(如 < 而不是 <=) | 1-2 分 |
| 数组索引从 0 开始但写成 1(或反之) | 1 分(如果上下文明确) |
| 缺少错误处理(栈空、未找到等) | 1 分 |
| Big O 写错(如 binary search 写成 O(n)) | 1-2 分 |