文章
80
粉丝
93
获赞
1
访问
7.6k

评分及理由
(1)得分及理由(满分4分)
学生答案的基本设计思想是使用两个变量M和m来保存当前最大值和最小值,然后利用这两个极值计算表达式。这与标准答案的核心思想一致(通过维护左侧极值来避免暴力遍历),因此思路正确。但学生答案中未明确说明“左侧”范围(即0到i-1的极值),而标准答案强调“左侧”极值(即当前元素之前的极值),但学生代码中实际实现的是从0到i的极值(包括当前元素),这会导致逻辑错误(详见第2部分扣分)。由于设计思想描述中未涉及具体实现细节,仅从文字描述看基本正确,故扣1分(满分4分,得3分)。
(2)得分及理由(满分7分)
学生代码存在逻辑错误:在计算res[i]时,M和m的更新是在当前循环迭代中先于表达式计算完成的,因此M和m实际上包含了当前元素A[i](即0到i的极值),而题目要求是0到i-1的极值(即左侧极值,不包括当前元素)。例如,当i=0时,M和m会被更新为A[0],然后计算t1和t2(均为0),这正确;但当i=1时,M和m会先更新为包含A[1]的极值,再计算表达式,这会导致错误(例如A[1]可能是新的最大值或最小值,从而使得表达式计算使用了自身,但题目要求k≤i,且k=i时表达式值为0,不影响最大值,但k=i-1之前的极值可能被覆盖)。具体错误:
- 标准答案要求使用左侧(0到i-1)的极值,而学生代码使用了0到i的极值(包括当前元素),这可能导致res[i]计算错误(例如,若当前元素是新的极值,则|Ai - Ak|中Ak可能是自身,差值为0,但实际最大值可能来自其他左侧元素)。
代码其他部分正确(如绝对值处理、平方计算、取最大值等)。由于核心逻辑错误,扣4分(满分7分,得3分)。
(3)得分及理由(满分2分)
学生正确分析了时间复杂度为O(n)和空间复杂度为O(1),与标准答案一致,因此得满分2分。
题目总分:3+3+2=8分
登录后发布评论
暂无评论,来抢沙发