文章

17

粉丝

0

获赞

0

访问

1.1k

头像
2018年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年8月11日 18:14
阅读数 79

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分

理由:学生的代码实现了基本思路,但存在以下问题:

  • 未处理非正整数(如负数或0),直接忽略可能导致错误。
  • 数组b的大小为n,但未考虑a[i]可能大于n的情况,会导致数组越界。
  • 代码中未初始化变量i,且函数未返回结果,而是直接打印。

因此扣3分。

(3)得分及理由(满分2分)

得分:1分

理由:学生正确分析了时间复杂度为O(n),但空间复杂度应为O(n)(辅助数组大小与输入规模相关),但未明确说明辅助数组的具体大小,因此扣1分。

题目总分:2+5+1=8分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发