文章
389
粉丝
5
获赞
19
访问
27.3k
评分及理由
(1)得分及理由(满分3分)
学生答案的基本设计思想是:使用一个标记数组B来记录原数组A中是否出现了1到n的正整数。思路清晰且正确,与标准答案的哈希标记思想本质相同(只是标准答案使用了原数组进行标记,而学生答案使用了额外数组)。根据评分规则,思路正确不扣分。得3分。
(2)得分及理由(满分8分)
学生给出的C语言代码实现了其设计思想:分配标记数组B并初始化为0,遍历A数组,将值在1到n范围内的正整数在B中对应位置标记为1,最后遍历B数组找到第一个未被标记的位置。代码逻辑正确,能够解决问题。但存在以下小问题: - 代码中`memset(B,0,sizeof(int)*n);`是正确的,但更规范的写法是`memset(B, 0, sizeof(int) * n);`(空格问题,属于格式细节,不扣分)。 - 未释放动态分配的数组B,存在内存泄漏。这是一个逻辑错误,扣1分。 因此,扣1分后,得7分。
(3)得分及理由(满分2分)
学生正确分析了时间复杂度O(n)和空间复杂度O(n)。分析正确,得2分。
题目总分:3+7+2=12分
登录后发布评论
暂无评论,来抢沙发