文章

26

粉丝

93

获赞

1

访问

1.5k

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


评分及理由

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

得2分。学生的基本设计思想是使用辅助数组,将原数组从p+1位置开始的元素先放入新数组,然后再将前p+1个元素放入新数组。这种方法能够实现循环左移,但思路与标准答案中的高效方法(三次逆置)不同。虽然正确,但空间复杂度较高(O(n)),而题目要求“在时间和空间两方面都尽可能高效”,因此该方法在空间上不够高效。但题目要求“思路正确不扣分”,因此不扣思路分,但设计思想未达到最优,扣2分。

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

得4分。学生代码使用辅助数组实现循环左移,但存在以下逻辑错误:
1. 循环条件错误:第一个循环应为从p到n-1(即索引p到n-1,共n-p个元素),但学生写的是从p+1到n-1(漏了索引p的元素),这会导致少移动一个元素。
2. 第二个循环应为从0到p-1(共p个元素),但学生写的是从0到p(包括索引p,共p+1个元素),这会导致多移动一个元素。
3. 函数参数未定义n:代码中使用了变量n,但函数参数只有A和p,n未定义(应为A.size(),但学生已在代码中获取len,但循环中错误使用了n)。
4. 最终未将结果赋回原数组:代码只是将数据存入临时数组tem,但未将tem的内容复制回A,因此原数组未被修改。
以上错误导致代码逻辑不正确,扣3分(每个主要错误扣1分)。代码整体思路正确,但实现有误。

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

得2分。学生正确分析了时间复杂度O(n)和空间复杂度O(n),与标准答案的“另解”一致,因此给满分。

题目总分:2+4+2=8分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发