文章

25

粉丝

0

获赞

0

访问

2.0k

头像
2025 年 6 月第 1 次 408 月考试卷 - 第41题回答
数据结构
发布于2025年9月22日 16:16
阅读数 50


评分及理由

(1)得分及理由(满分4分)

学生答案的基本设计思想是:先正序遍历找到所有峰,并用数组记录每个位置之前的最大峰值;然后倒序遍历找到谷,并计算峰值与谷值的差值。但该思路存在逻辑问题:记录的是每个位置之前的最大峰值,但峰必须在谷之前(i < j),而倒序遍历时,用当前位置之前的最大峰值减去当前谷值,可能违反峰在谷之前的条件(因为最大峰值可能出现在当前谷之后)。标准答案采用预处理每个位置之后的最小谷值,确保峰在谷之前。因此,该设计思想有缺陷,但部分正确(如遍历识别峰和谷)。扣2分,得2分。

(2)得分及理由(满分7分)

代码实现中:
- 数组h[n]未初始化(h[0]未定义),且逻辑错误:正序遍历时,对于非峰位置直接继承前值(h[i] = h[i-1]),但h[0]未初始化会导致错误。
- 变量f用于记录第一个峰的位置,但初始化f=0,判断if(f!=0) f=i; 实际上f始终不为0(初始0),因此f不会被更新,始终为0,导致后续循环条件i>=f可能出错(f=0时,倒序遍历从n-2到0,但峰位置应大于0)。
- 核心逻辑错误:用h[i](i位置之前的最大峰值)减去当前谷值A[i],但h[i]可能包含i之后的峰值(因为最大峰值是向前累积的),违反峰在谷前的约束。
- 代码不完整:max函数未定义,且数组h声明错误(C语言不支持变长数组的此类初始化)。
但代码尝试实现了峰和谷的识别,并计算差值,部分思路正确。扣5分(逻辑错误严重),得2分。

(3)得分及理由(满分2分)

学生正确给出了时间复杂度和空间复杂度(均为O(n)),与标准答案一致。得2分。

题目总分:2+2+2=6分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发