文章

91

粉丝

0

获赞

4

访问

9.4k

头像
2024年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年10月26日 21:37
阅读数 89


评分及理由

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

学生答案的基本设计思想正确:通过统计入度,每次选择入度为0的顶点进行移除,并检查每次迭代时入度为0的顶点数量是否恰好为1。这与标准答案的思路一致,因此得4分。

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

学生代码存在以下问题:

  • 代码中变量声明有误:int i=j=k=0; 在C/C++中不能这样连续赋值,应分别声明。但考虑到可能是识别错误,不扣分。
  • 数组声明使用变量长度:int indegree[G.numVertices] 在C中不支持(C++支持),但题目未明确语言版本,且标准答案也使用了固定数组,此处不扣分。
  • 逻辑错误:在每次外层循环中,内层循环遍历所有顶点统计入度为0的顶点数,但未将已处理的顶点标记为已访问(如标准答案中将入度设为-1)。这会导致同一顶点被重复统计,造成错误。例如,第一次处理入度为0的顶点后,未将其入度设为-1,后续循环中可能再次统计到该顶点。这是一个严重的逻辑错误,扣3分。
  • 变量初始化:count2初始为0,但在第一次循环中,count1(当前入度为0的顶点数)应与0比较(即第一次应为1),但学生代码使用count1 != count2 + 1,第一次循环时count2=0,count1应为1,条件为1 != 0+1即1 != 1,不成立,因此不会返回0。但后续循环因未标记已处理顶点,会导致错误。由于未标记顶点是主要错误,此处不额外扣分。

综上,代码核心逻辑有缺陷,扣3分,得6分。

题目总分:4+6=10分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发