文章
92
粉丝
68
获赞
0
访问
11.3k
(1) 两次for循环统计所有节点的入度和出度,分别存储到数组in[MAXV]和out[MAXV]. 最后统计所有出度大于入度的顶点,总数计入n;
(2)
int printVertices(MGraph G){
int in[MAXV] = {0};int out[MAXV] = {0} ; int n=0;
for (int i=0 ; i< G.numVertices;i++)
for( int j=0 ; j<G.numVertices;j++)
if(G.Edge[ i ][ j ] == 1)
{in[ j ]++;out[i]++;}
//所有节点入度出度已经计算完毕
for (int k=0 ;k<G.numVertices;k++)
if( out[k] > in[k] )
{cout<<k; n++}
//K顶点总数已经计算至n;
return n;
}
评分及理由
(1)得分及理由(满分4分)
得分:4分
理由:学生的设计思想与标准答案基本一致。第一步通过遍历邻接矩阵统计所有顶点的入度和出度,分别存储在数组中;第二步遍历所有顶点,找出出度大于入度的顶点并计数。思路清晰完整,没有逻辑错误,因此给予满分。
(2)得分及理由(满分9分)
得分:6分
理由:学生的代码实现了算法的主要逻辑,但存在以下问题:
1. 输出错误(扣2分):题目要求输出K顶点的名称(字符类型),但学生代码中输出的是顶点下标(整数类型),即cout << k;。这不符合题目要求,属于逻辑错误。
2. 代码细节问题(扣1分):学生使用了C++的cout进行输出,但题目要求是C/C++描述,且标准答案中使用了C语言的printf。虽然这不算严重错误,但考虑到代码的规范性和与题目语境的契合度,扣1分。
3. 其他:算法核心逻辑(统计入度出度、判断并计数)正确,数组初始化等...
登录后发布评论
暂无评论,来抢沙发