文章
238
粉丝
0
获赞
3
访问
32.7k
评分及理由
(1)得分及理由(满分3分)
学生答案的基本设计思想是使用一个长度为n+1的哈希表来统计1~n出现的次数,然后遍历哈希表找到第一个值为0的位置。这种思路是正确的,能够解决问题,且时间复杂度为O(n)。虽然与标准答案(原地标记法)不同,但根据评分要求“思路正确不扣分”,因此本题得3分。
(2)得分及理由(满分8分)
学生提供的C语言代码实现了上述设计思想。代码逻辑清晰,正确使用了哈希表统计1~n范围内正整数的出现次数,并正确返回未出现的最小正整数。代码中有一个小问题:哈希表初始化时使用了“int hash[n + 1] = {0};”,这在C99标准中是可变的长度数组(VLA)并初始化为0,是合法的。但需要注意,如果编译器不支持VLA或初始化,可能会有问题,但根据题意和常见环境,可以接受。代码关键部分有注释,符合要求。因此本题得8分。
(3)得分及理由(满分2分)
学生正确分析了时间复杂度为O(n)和空间复杂度为O(n),与算法实际性能一致。因此本题得2分。
题目总分:3+8+2=13分
登录后发布评论
暂无评论,来抢沙发