文章

125

粉丝

93

获赞

1

访问

20.0k

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


评分及理由

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

得分:4分

理由:学生的基本设计思想与标准答案一致。正确描述了先计算入度,然后在每轮迭代中寻找入度为0的顶点,若每轮入度为0的顶点不唯一则不存在唯一拓扑序列,思路清晰完整,无逻辑错误。

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

得分:3分

理由:学生的代码框架基本正确,但存在多处严重逻辑错误和细节错误:
1. 计算入度时,代码使用int a = Edge[i][j]; tem[a]++;,这里Edge[i][j]存储的是边的权重(0或1),而不是目标顶点的索引,正确做法应是if(G.Edge[i][j] != 0) tem[j]++;。此错误导致入度统计完全错误,属于核心逻辑错误。
2. 在删除顶点后更新邻接顶点入度时,同样错误地使用int b = Edge[p][j]; tem[b]--;,正确应为if(G.Edge[p][j] != 0) tem[j]--;
3. 循环条件使用MAXV而非实际顶点数G.numVertices,可能访问无效内存,但考虑到识别可能误写,且核心错误已扣分,此处不额外扣分。
4. 未处理图中存在环的情况(即某轮找不到入度为0的顶点),但标准答案中对此情况返回0,学生代码未显式处理,不过其外层循环结束后返回1,若存在环会导致错误结果,此逻辑缺陷已包含在第一条错误导致的整体算法失效中。
由于核心逻辑(入度计算和更新)存在根本性错误,导致算法无法正确工作,扣分严重。但考虑到学生正确描述了算法框架和关键步骤(统计入度、每轮找入度0顶点、判断唯一性),给予部分分数。

题目总分:4+3=7分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发