文章

62

粉丝

0

获赞

0

访问

1.5k

头像
2016年(408)计算机学科专业基础综合试题 - 第43题回答
数据结构
发布于2025年11月28日 20:06
阅读数 14


评分及理由

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

得分:2分

理由:学生答案中提出"将前n/2上取整个较大数存入A1,其余存入A2",这个基本思路是正确的,因为确实需要将较大的n/2个元素放在一个子集中,较小的n/2个元素放在另一个子集中,这样才能使|S1-S2|最大且|n1-n2|最小。但是学生没有给出具体的实现思想,特别是没有提到如何高效地找到这n/2个较大元素,只是简单描述结果,没有算法设计思想,因此扣2分。

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

得分:3分

理由:

  • 代码试图实现选择较大的n/2个元素放入A1,基本方向正确
  • 但是代码存在严重问题:外层循环逻辑不完整,缺少循环体;变量a,b,c的初始化语法错误(int a = b = c = 0; 在C/C++中不允许这样初始化)
  • 算法效率低下,采用逐个找最大值的方法,时间复杂度为O(n²),远低于标准答案的O(n)复杂度
  • 代码逻辑混乱,第一个for循环没有实际作用,第二个for循环只找一次最大值
  • 缺少对数组A1和A2的完整填充逻辑
  • 没有计算和返回S2-S1的值

由于代码基本思路正确但实现存在严重缺陷,给予3分。

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

得分:1分

理由:学生正确分析了时间复杂度为O(n²/2+n)≈O(n²),空间复杂度为O(n),这与代码的实际复杂度相符。但是给出的时间复杂度分析不够精确,且算法复杂度远高于最优解,因此扣1分。

题目总分:2+3+1=6分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发