文章

299

粉丝

0

获赞

0

访问

29.2k

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


评分及理由

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

学生给出的基本设计思想是:构建一个大小为 n+1 的辅助数组,用于标记正整数是否出现,最后查找第一个未标记的位置。该思路正确,能够解决问题,且时间复杂度为 O(n),空间复杂度为 O(n)。虽然与标准答案(原地标记法)不同,但根据“思路正确不扣分”原则,此处不扣分。得3分。

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

学生给出了 C 语言代码,但存在以下逻辑错误:

  • 在第二个 for 循环中,代码为 if (S[i] >= 0) { A[i] = 1; },这里应该是 A[S[i]] = 1,即将正整数 S[i] 作为索引进行标记,而不是用循环变量 i 作为索引。这是一个明显的逻辑错误,会导致结果错误。
  • 另外,代码没有处理正整数可能大于 n 的情况(例如数组 {1,2,3} 中未出现的最小正整数是4,但若按照学生的逻辑,当所有 1~n 都出现时,循环会返回 A[n](即0),但此时应返回 n+1)。不过,学生的循环范围是 i 从 0 到 n(共 n+1 个元素),且初始化全为0,当 1~n 都出现时,A[0] 始终为0,因此会返回0,而正确答案应为4。这属于逻辑不完整。

由于存在上述逻辑错误,扣分。根据错误严重程度,扣4分。得4分。

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

学生正确给出了时间复杂度 O(n) 和空间复杂度 O(n),与算法设计一致。得2分。

题目总分:3+4+2=9分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发