文章

305

粉丝

0

获赞

0

访问

64.7k

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


评分及理由

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

学生答案的基本设计思想与标准答案一致:从后往前遍历,维护当前子数组的最大值和最小值,根据A[i]的正负分别乘以最大值或最小值得到res[i]。思路正确,表述清晰。得4分。

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

学生代码整体框架正确,但存在一处逻辑错误:在if(A[i]≥0)if(A[i]<0)的两个分支内部,当更新maxamina时,res[i]的计算使用的是更新后的maxamina,这符合逻辑。然而,代码在每次迭代中先判断A[i]的正负,再根据条件更新极值,这本身没有问题。但仔细分析,标准答案的做法是:先更新极值(将当前A[i]纳入考虑),再根据A[i]的正负选择乘以当前极值。学生代码在正数分支中,若A[i]大于当前maxa,会先更新maxa再计算乘积,这相当于用A[i]乘以自身(因为此时maxa就是A[i]),结果是正确的;若A[i]不大于maxa,则乘以原来的maxa,也是正确的。负数分支同理。因此代码逻辑实际上正确,只是写法与标准答案略有不同(标准答案先统一更新极值,再计算;学生代码在分支内更新极值)。但学生代码有一个潜在问题:当A[i]为0时,按照题目示例,0属于非负数,应乘以最大值,但学生代码中if(A[i]≥0)包含0,处理正确。整体代码能够正确计算res数组,关键注释虽未给出,但代码结构清晰。因此不扣分。得7分。

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

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

题目总分:4+7+2=13分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发