文章

280

粉丝

1

获赞

8

访问

50.8k

头像
2025年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年10月8日 17:24
阅读数 79


评分及理由

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

学生答案的基本思想是:使用两个数组分别保存从n-1到i的最大值和最小值,然后根据A[i]的正负性选择乘以最大值或最小值。这个思路基本正确,能够处理正负数的情况,但存在一个逻辑缺陷:当A[i]为0时,按照学生的条件判断(A[i] > 0),会错误地选择乘以最大值,但实际上0乘以任何数都是0,应该直接取0。不过,由于题目没有明确说明0的处理,且标准答案中也没有特别处理0,因此这个缺陷不严重。此外,学生的思路与标准答案的预处理思想一致,但标准答案使用动态更新极值的方法,空间效率更高。考虑到思路核心正确,扣1分。得分:3分。

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

学生代码实现了基本思想,但存在以下逻辑错误:
1. 在计算res[i]时,仅根据A[i] > 0选择乘以Max[i]或Min[i],但忽略了A[i]本身可能是最大值或最小值的情况(例如,如果A[i]是正数且大于Max[i],但乘以Max[i]后可能小于A[i]本身)。标准答案中res[i]需要取A[i]、A[i]*max_suffix、A[i]*min_suffix中的最大值,而学生代码未考虑A[i]本身,这会导致结果错误(例如,如果A[i]是正数且很大,但Max[i]较小,乘积可能小于A[i])。
2. 代码中未处理A[i]为0的情况,但如前所述,这不严重。
3. 代码使用了变长数组(Max[n]和Min[n]),这在C++中非标准,但属于语言细节,不扣分。
由于核心逻辑错误(未比较A[i]本身),扣3分。代码结构清晰,注释合理,加回1分。得分:5分。

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

学生正确分析了时间复杂度为O(n)和空间复杂度为O(n),与代码实现一致。但标准答案的空间复杂度为O(1),学生的空间复杂度较高,但分析正确,不扣分。得分:2分。

题目总分:3+5+2=10分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发