文章

179

粉丝

0

获赞

0

访问

7.9k

头像
2010年计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年9月24日 21:01
阅读数 72


评分及理由

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

学生给出的基本设计思想是借助辅助数组实现循环左移:申请长度为P的辅助数组B,将R的前P个元素存入B,然后将R中剩余元素前移,最后将B中元素放回R的尾部。这种思路与标准答案中的"另解"完全一致,是正确且高效的方法。因此得4分。

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

学生用C语言实现了算法,但存在以下问题:

  • 代码中第一个循环"B[i] = 0"是多余的初始化操作,不影响正确性但效率稍低(扣1分)
  • 关键逻辑错误:第三个循环"R[i] = R[n-P+i]"应该是将剩余元素前移,但这里错误地将尾部元素覆盖了前P个位置(扣4分)
  • 正确的做法应该是将R[P]到R[n-1]的元素移动到R[0]开始的位置
  • 代码整体结构清晰,内存管理正确(free(B))

由于存在关键逻辑错误,本题得2分。

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

学生正确分析了时间复杂度为O(n),但空间复杂度分析有误。使用辅助数组B的大小为P,因此空间复杂度应为O(P)而不是O(n)。由于P < n,O(P)是比O(n)更精确的分析。此处扣1分,得1分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发