文章
17
粉丝
0
获赞
0
访问
1.1k
1)使用一个单独的数组保存所给数组(设为a【n】)中值为x的元素的个数,例如值为3则b【3】++,遍历a得到一个存储a的各个元素出现次数的数组b,再遍历b即可得到未出现的最小正数
2)void Findmin(int a【】;int n)
{int b[n]=0;
for (i=0;i<n;i++){if(a[i]>0) {b[a[i]]++;}}
for(i=1;i<=n+1;i++){if (b[i]==0) printf("%d",i);}
3)时间复杂度On2,空间复杂的On
评分及理由
(1)得分及理由(满分3分)
得分:2分
理由:学生的设计思想基本正确,通过使用辅助数组记录元素出现次数来寻找未出现的最小正整数。但未考虑到数组元素可能大于n的情况,且未明确说明如何处理非正整数,因此扣1分。
(2)得分及理由(满分8分)
得分:5分
理由:学生的代码实现了基本思路,但存在以下问题:
因此扣3分。
(3)得分及理由(满分2分)
得分:1分
理由:学生正确分析了时间复杂度为O(n),但空间复杂度应为O(n)(辅助数组大小与输入规模相关),但未明确说明辅助数组的具体大小,因此扣1分。
题目总分:2+5+1=8分
登录后发布评论
暂无评论,来抢沙发