评分及理由
(1)得分及理由(满分4分)
学生作答给出了正确的算法设计思想:建立入度表,每次选择入度为0的顶点,将其邻接点入度减1,如果每次有且仅有一个入度为0的顶点且处理了所有顶点,则存在唯一拓扑序列。这与标准答案思路一致,得4分。
(2)得分及理由(满分9分)
代码实现存在以下问题:
- 函数参数类型应为MGraph而非Graph(扣1分)
- 入度计算部分:第一个for循环中degree[j] += G.Edge[i][j] 应该是计算每个顶点的入度,但标准做法是遍历j列累加,这里逻辑有误(扣2分)
- 初始化ino=1不合理,应该初始化为-1或其他表示未找到的值(扣1分)
- 第一个for循环结束后,如果找到多个入度为0的顶点,ino会被设为-2,但后续while循环仍然会执行,逻辑错误(扣2分)
- 缺少对没有入度为0顶点情况的处理(扣1分)
- while循环条件ino>=0,当ino=-2时不会进入循环,但此时可能还有顶点未处理(扣1分)
代码整体框架基本正确,但存在多处逻辑错误。根据扣分情况,得1分。
题目总分:4+1=5分
登录后发布评论
暂无评论,来抢沙发