文章

459

粉丝

0

获赞

1

访问

59.2k

头像
2010年(408)计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年12月8日 15:54
阅读数 5


评分及理由

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

得分:2分

理由:学生的基本设计思想是进行三次翻转操作,这与标准答案的思路(三次逆置)在宏观上是一致的,都是通过翻转实现循环左移。但是,学生的具体步骤描述有误:标准答案是先翻转前p个,再翻转后n-p个,最后整体翻转;而学生描述的是先整体翻转,再翻转前n-p个,最后翻转后p个。这种顺序虽然理论上也能实现循环左移,但需要仔细验证其正确性。由于题目要求循环左移p位,学生的步骤描述(第一次翻转[0~n-1])会导致中间结果与标准答案不同,虽然最终可能结果正确,但描述不够清晰准确,且未给出示例说明,因此扣2分。

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

得分:4分

理由:学生给出了Reverse函数和Shiftleft函数,代码结构基本正确,使用了原地交换,空间复杂度O(1)。但是存在以下问题:
1. Reverse函数中的while循环条件为while (low != high),当low和high相邻时(例如low=0, high=1),交换一次后low=1, high=0,此时low != high仍然成立,会继续循环,导致再次交换,实际上会交换回去,从而无法正确翻转。正确的条件应为while (low < high)。这是一个逻辑错误,扣2分。
2. Shiftleft函数中的三次翻转调用顺序与标准答案不同,但根据数学推导,如果Reverse函数正确,该顺序也能实现循环左移(验证:整体翻转后,序列变为原序列的逆序;再翻转前n-p个,相当于将原序列的后n-p个元素逆序后再放到前面;最后翻转后p个,相当于将原序列的前p个元素逆序后放到后面。最终结果确实是循环左移p位)。但由于Reverse函数本身有误,所以整体算法无法正确工作。考虑到代码整体框架正确,但核心函数有缺陷,扣1分。
综上,本部分扣3分,得4分。

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

得分:2分

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

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发