文章

56

粉丝

0

获赞

0

访问

1.9k

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


评分及理由

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

学生给出的基本设计思想是使用一个大小为n的辅助数组B来记录每个元素出现的次数,然后遍历B数组检查是否有元素的出现次数超过n/2。这种方法虽然正确,但并不是题目要求的“尽可能高效的算法”,因为标准答案使用了更优的Boyer-Moore投票算法,其空间复杂度为O(1),而学生的方案空间复杂度为O(n)。然而,题目只要求“尽可能高效”,且学生的思路确实能正确解决问题,因此不扣分。但标准答案强调“尽可能高效”通常指时间O(n)和空间O(1),学生的方案空间复杂度较高,但设计思想正确,因此得4分。

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

学生实现了基于计数数组的算法,代码逻辑正确,能够正确统计每个元素的出现次数并检查主元素。但存在以下问题:
1. 代码中使用了动态内存分配(C++的new),但题目允许使用C/C++/Java,在Java中这样写是合法的(但学生代码标记为C++风格,实际是Java语法混合)。
2. 代码中有一个注释“这里有涂抹部分,暂不考虑”,但识别结果中未影响核心逻辑。
3. 算法正确性无误,但空间复杂度为O(n),不如标准答案的O(1)高效。
根据评分说明,思路正确不扣分,但实现中空间复杂度较高,不符合“尽可能高效”的要求。因此扣2分,得5分。

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

学生正确分析了时间复杂度为O(n)和空间复杂度为O(n),与所实现的算法一致,因此得2分。

题目总分:4+5+2=11分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发