文章
183
粉丝
0
获赞
1
访问
61.7k

评分及理由
(1)得分及理由(满分3分)
得分:2分
理由:学生的基本设计思想是使用辅助数组B记录正整数出现次数,然后遍历B数组找到第一个未出现的正整数。这个思路是正确的,能够解决问题。但存在两个问题:① 对边界情况的描述不够完整(当数组包含1到n的所有正整数时应返回n+1);② 描述中"若找到则输出n+1"存在逻辑矛盾(应该是找不到时才返回n+1)。由于核心思路正确,扣1分。
(2)得分及理由(满分8分)
得分:5分
理由:代码实现基本遵循了设计思想,但存在以下逻辑错误:
1. 数组声明错误:int *B[n+1]应该是int B[n+1](识别问题,可能是误写,不扣分)
2. 第三个循环的范围错误:for(int i=1; i<n; i++)应该是for(int i=1; i<=n; i++),否则会漏掉检查n这个位置(逻辑错误,扣2分)
3. 如果数组元素值大于n,会导致数组越界访问(逻辑错误,扣1分)
代码整体结构清晰,核心逻辑正确,但存在边界处理问题。
(3)得分及理由(满分2分)
得分:2分
理由:时间复杂度和空间复杂度的分析完全正确。算法需要三次遍历,时间复杂度为O(n);需要额外n+1大小的数组,空间复杂度为O(n)。
题目总分:2+5+2=9分
登录后发布评论
暂无评论,来抢沙发