文章

21

粉丝

0

获赞

0

访问

255

头像
【2020年】408计算机统考真题模拟考试 - 第41题答案笔记
数据结构
发布于2025年5月9日 19:36
阅读数 14

计算机考研408统考历年真题及答案解析

(1)定义三个指针,每次处理完毕后,三个指针依次相加,每当出现最短距离时,便更新对应的|a-b|,|b-c|,|c-a|的值

(2)

int window=3;//定义窗口大小

int p1=0;int p2=0;int p3=0;//s1,s2,s3三指针

int ans=9999;

while(window!=0)

{

h1=abs(s1[p1]-s2[p2]);if(h1>pivot&&p1<s1.size())p1++;continue;

h2=abs(s2[p1]-s3[p3]);if(h2+h1>pivot&&p2<s2.size())p1++;continue;

h3=abs(s3[p3]-s1[p1]);if(h1+h2+h3>pivot&&p3<s3.size())continue;

pivot=h1+h2+h3;

if(p1==s1.size()&&p2==s2.size()&&p3==s3.size())break;
}

cout<<pivot;

(3)由于是仅对所有三元组的每个序列遍历一次,故时间复杂度为o(n),空间复杂度为o(1)


评分及理由

(1)得分及理由

得分:1分

理由:学生的基本设计思想描述较为模糊,没有明确指出如何移动指针以找到最小距离。虽然提到了三个指针和更新距离的概念,但缺乏具体的移动策略和逻辑细节,与标准答案中的多指针移动策略不完全吻合。

(2)得分及理由

得分:3分

理由:学生的代码实现存在多处逻辑错误:

  • 代码中使用了未定义的变量(如pivoth1h2h3)。
  • 指针移动逻辑错误(如p1++h2的判断中错误使用)。
  • 循环条件window!=0无实际意义,且未正确处理指针越界问题。
  • 代码未完整实现功能,无法正确计算最小距离。

虽然学生尝试使用指针移动的思路,但代码逻辑混乱,无法正确实现功能。

(3)得分及理由

得分:1分

理由:学生的时间复杂度分析(O(n))与标准答案(O(n1+n2+n3))基本一致,但未明确区分三个数组的长度。空间复杂度分析正确(O(1))。由于代码实现错误,时间复杂度分...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发