文章

63

粉丝

0

获赞

0

访问

13.4k

头像
2025年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年10月3日 21:39
阅读数 289

(1) 由题易得,如果A[i]>0,则A[i]应该乘一个在A[i]右侧数字中最大的数,如果A[i]<0,则A[i]应该乘一个A[i]右侧中最小的数。所以,我们可以先建立两个数组,max_A[n]与min_A[n],max_A[i]等于i到n-1最大的数,min_A[i]等于i到n-1最小的数。然后我们遍历A[i],如果A[i]>0,则res[i]=A[i]*max_A[i]。反之,res[i]=A[i]*min_A[i]。(2)

void CallMulMax(int A[], int res[], int n) {

int max_A[n];

max_A[n-1]=A[n-1];

int min_A[n];

min_A[n-1]=A[n-1];

for (int i = n-2; i >= 0; i --) {

if (A[i]>max_A[i+1]){

max_A[i]=A[i];

}else {

max_A[i] = max_A[i+1];

}

if (A[i] < min_A[i+1]){

min_A[i] = A[i];

}else {

min_A[i] = min_A[i+1];

}

}

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

if (A[i] >0){

res[i] = A[i] * max_A[i];

}else {

res[i] = A[i] *min_A[i];

}

}

}


(3)时间复杂度:O(n)。因为无论是max_A数组,min_A数组的初始化,还是res[i]的计算,我们只遍历了一遍数组,总共只遍历了两次,所以为O(n)。

空间复杂度:O(n)。因为我们要维护max_A数组与min_A数组,所以空间复杂度为两数组的规模,所以为O(n)。


评分及理由

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

得分:4分

理由:学生正确理解了题目要求,提出了使用后缀最大值和最小值数组的思路。基本思想与标准答案一致,虽然实现方式不同但逻辑正确。对于正数和负数分别处理的方法合理,能够正确计算乘积最大值。

(2)得分及理由(满分7...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发