文章
134
粉丝
0
获赞
2
访问
7.0k
评分及理由
(1)得分及理由(满分4分)
学生答案的基本设计思想与标准答案一致:通过计算每个顶点的入度,然后在每一轮迭代中查找入度为0的顶点,如果存在多个入度为0的顶点则返回0(表示拓扑序列不唯一),如果恰好有一个则移除该顶点并更新其邻接顶点的入度,最终若所有顶点都被处理则返回1(表示拓扑序列唯一)。因此,设计思想正确,得4分。
(2)得分及理由(满分9分)
学生代码整体逻辑正确,但存在以下问题:
1. 第2次识别结果中,第2行和第3行重复定义了`degree`变量(第2行声明,第3行再次定义并分配内存),且第3行使用了`G.DnumVertices`(应为`G.numVertices`),但根据上下文和第一次识别结果,这可能是识别错误(实际应为`G.numVertices`)。由于题目要求对识别错误不扣分,因此不扣分。
2. 第3行分配内存后未初始化`degree`数组(初始值应为0),但后续通过循环计算入度时实际覆盖了初始值(因为使用了`degree[j]++`),因此逻辑正确,但代码不严谨(未初始化可能导致未定义行为)。但标准答案也未显式初始化(使用`={0}`),而学生使用`malloc`后未初始化,但通过后续计算入度实际正确初始化了数组,因此不扣分。
3. 代码中未释放动态分配的内存(`malloc`),但题目未要求内存管理,且算法功能正确,因此不扣分。
综上,代码核心逻辑与标准答案一致,仅有一些细节问题(如变量名识别错误)但不影响整体正确性,根据要求不扣分。得9分。
题目总分:4+9=13分
登录后发布评论
暂无评论,来抢沙发