文章

438

粉丝

0

获赞

0

访问

76.5k

头像
2025年(408)计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年12月7日 17:20
阅读数 2


评分及理由

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

学生给出的算法设计思想是使用两重循环遍历所有可能的 i 和 j(0 ≤ i ≤ j ≤ n-1),并更新 res[i] 为 A[i] × A[j] 的最大值。虽然这种方法在逻辑上正确,能够计算出题目要求的结果,但题目要求“时间和空间上尽可能高效的算法”,而学生的算法时间复杂度为 O(n²),并非高效解法。标准答案给出了 O(n) 的线性时间解法,更为高效。因此,学生的设计思想虽然正确,但未达到高效要求,扣2分。得分:2分。

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

学生提供的代码实现了其设计思想,但存在以下问题:
1. 代码中使用了 `memset(res, INT_MIN, sizeof(res))`,但 `INT_MIN` 是整数最小值,而 `memset` 按字节设置,此处用法错误,会导致数组元素值并非预期的 `INT_MIN`。这属于逻辑错误,扣2分。
2. 内层循环 `for(int j = 0; j < n; j++)` 没有限制 j ≥ i,题目要求是 0 ≤ i ≤ j ≤ n-1,但学生的代码计算了所有 j(包括 j < i 的情况),这会导致结果错误(例如,如果 A[i] 为负数且 A[j](j < i)为正数且绝对值很大,可能会错误地更新 res[i])。这属于逻辑错误,扣3分。
3. 代码中使用了乘号“×”,在C/C++中应为“*”,但根据禁止扣分规则,可能为识别错误,不扣分。
综上,代码逻辑错误较多,扣5分。得分:2分。

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

学生正确分析了其算法的时间复杂度为 O(n²) 和空间复杂度为 O(1),与其实现代码一致,因此不扣分。得分:2分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发