文章
91
粉丝
0
获赞
4
访问
9.4k

评分及理由
(1)得分及理由(满分4分)
学生答案的基本设计思想正确:通过统计入度,每次选择入度为0的顶点进行移除,并检查每次迭代时入度为0的顶点数量是否恰好为1。这与标准答案的思路一致,因此得4分。
(2)得分及理由(满分9分)
学生代码存在以下问题:
int i=j=k=0; 在C/C++中不能这样连续赋值,应分别声明。但考虑到可能是识别错误,不扣分。int indegree[G.numVertices] 在C中不支持(C++支持),但题目未明确语言版本,且标准答案也使用了固定数组,此处不扣分。count2初始为0,但在第一次循环中,count1(当前入度为0的顶点数)应与0比较(即第一次应为1),但学生代码使用count1 != count2 + 1,第一次循环时count2=0,count1应为1,条件为1 != 0+1即1 != 1,不成立,因此不会返回0。但后续循环因未标记已处理顶点,会导致错误。由于未标记顶点是主要错误,此处不额外扣分。综上,代码核心逻辑有缺陷,扣3分,得6分。
题目总分:4+6=10分
登录后发布评论
暂无评论,来抢沙发