文章

87

粉丝

0

获赞

1

访问

19.9k

头像
2018年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年7月13日 16:37
阅读数 250

(1)满足题意的含n个数组中有的最小整数最大为n+1,设置一个大小为n+1的辅助数组,数组下标从0开始,所有元素初始化为0,遍历原数组,若数组元素大于0,将其存储到辅助数组的第i-1号位置中,之后扫描辅助数组,第一个元素内容为0的数组下表+1即为所求。

(2)伪代码如下

int n;cin>>n;int ans=0;

int a[n];int b[n];

for(int i=0;i<n;i++)b[i]=0;//初始化b数组

for(int i=0;i<n;i++){

if(a[i]>0) b[a[i]-1)=a[i];}

for(int i=0;i<n;i++){if(b[i]==0) ans=i+1;}

cout<<ans;

(3)时间与空间复杂度均为o(n)


评分及理由

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

得分:3分

理由:学生的设计思想正确,虽然与标准答案不同,但思路清晰且可行。通过辅助数组标记存在的正整数,最后扫描辅助数组找到未出现的最小正整数,符合题目要求。

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

得分:6分

理由:学生的伪代码基本正确,但存在以下问题:

  • 伪代码中未处理输入数组a的初始化或输入,导致逻辑不完整。
  • 伪代码中未处理边界情况(如所有正整数都出现时返回n+1)。
  • 伪代码语法有误(如b[a[i]-1)应为b[a[i]-1])。

因此扣2分。

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

得分:2分

理由:学生正确分析了时间复杂度和空间复杂度,均为O(n),与标准答案一致。

题目总分:3+6+2=11分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发