2025 年 10 月第 1 次 408 月考试卷 - 第41题回答
数据结构
发布于2025年12月3日 14:56
阅读数 185

评分及理由
(1)得分及理由(满分4分)
得分:2分
理由:学生的作答给出了动态规划的基本思路,使用了 odd_max 和 even_max 两个变量来记录状态,这与标准答案的核心思想(维护以当前元素结尾的奇数长度和偶数长度子数组的最大交替和)是一致的。但是,学生的描述非常简略,没有清晰地阐述状态的定义和转移方程,也没有说明为什么需要根据 i 的奇偶性进行不同的计算(这实际上是混淆了数组下标奇偶性和子数组长度奇偶性,是一个潜在的错误)。由于基本设计思想表述不完整、不清晰,扣2分。
(2)得分及理由(满分7分)
得分:3分
理由:学生的代码实现存在严重的逻辑错误和混淆。
- 语言混杂:函数原型要求用C或C++,但学生代码中混用了Python语法(如 `n = len(A)`, `res = [0]*n`, `for i in range(1,n)`),这不符合题目要求。扣2分。
- 核心逻辑错误:算法根据当前索引 i 的奇偶性来决定计算顺序(`if i%2==0` 和 `if i%2!=0` 分支),这是错误的。状态转移应基于子数组长度的奇偶性,而不是数组下标的奇偶性。例如,在 `i` 为偶数的分支中,先计算 `even_max=odd_max - A[i]`,然后立刻用这个新的 `even_max` 去计算 `odd_max = max(even_max+A[i], A[i])`,这导致了错误的依赖关系,使得 `odd_max` 的计算基于了刚刚更新过的 `even_max`,而不是上一轮的 `even_max`。标准答案中,`curr_odd` 和 `curr_even` 是并行基于上一轮的 `prev_odd` 和 `prev_even` 计算的,不存在这种顺序依赖。这个逻辑错误会导致计算结果不正确。扣2分。
- 初始化问题:`even_max` 初始化为0,而标准答案中对于 i=0 的位置,偶数长度状态是不存在的,应初始化为一个极小值(如 `INT_MIN`)。虽然在某些情况下初始化为0可能碰巧得到正确结果,但这不是通用、严谨的做法。考虑到主要扣分点在于上述逻辑错误,此处不额外扣分。
- 代码结构:提供了函数框架,但内部实现语言错误且逻辑混乱。由于核心思想正确但实现有重大缺陷,给予部分分数。
(3)得分及理由(满分2分)
得分:2分
理由:...
登录后发布评论
暂无评论,来抢沙发