文章

64

粉丝

1

获赞

0

访问

7.1k

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


评分及理由

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

学生给出的基本设计思想是正确的,通过分析距离D的表达式,发现D仅与最大值和最小值的差有关(即2(c-a)),并提出了使用三个指针初始指向三个数组的首元素,每次移动指向最小值的指针,直到有一个指针到达末尾。这一思路与标准答案中的方法二(同向多指针)一致,因此得3分。

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

学生提供的代码整体上实现了设计思想,但存在一些逻辑错误和细节问题:

  • 代码中参数声明有误:int* S1[]应为int S1[](第一次识别结果),但第二次识别结果已修正为int S₁[](可能是识别误差,不扣分)。
  • 指针初始化错误:int i = j = k = 0;在C/C++中是非法的,应分别初始化(如int i=0, j=0, k=0;)。这是一个逻辑错误,扣1分。
  • 指针移动策略有缺陷:条件判断if(S1[i] < S2[j] && S1[i] < S3[k])等,当存在多个相等的最小值时,可能无法正确处理(例如,如果S1[i]和S2[j]相等且都小于S3[k],则只会移动i,但j也应该被考虑)。标准答案中通过比较三个值的大小,并优先移动最小的,但这里条件判断不全面,可能导致遗漏。这是一个逻辑错误,扣2分。
  • 代码中输出语句cout << D << endl;在C语言环境中不适用(题目要求C或C++,但函数返回类型为int,且输出可能多余),但鉴于题目要求“输出”,不扣分。

因此,代码部分扣除3分(初始化错误1分+指针移动策略错误2分),得5分。

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

学生正确分析了时间复杂度为O(n)(实际应为O(n1+n2+n3))和空间复杂度为O(1),与标准答案一致,得2分。

题目总分:3+5+2=10分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发