文章

29

粉丝

0

获赞

0

访问

1.0k

头像
2025年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年9月27日 17:28
阅读数 56

(1)算法思想:暴力解法,对于每一个元素A[i]直接向后遍历,得到的最大值存入res[i].需要注意的是res[i]>=0.因为即是A[i]是负数,后面的全是整数,那么res[i]=A[i]*A[i]>=0.

(2)代码:

void calMulMax(int A[]){
    int m=0;
    //初始化res[].
    while(m<n){
		res[m]=0;
    }
    for(int i=0;i<n;i++){
        for(int j=i;j<n;j++){
            int max = A[i]*A[j];
            if(res[i]<max){
                res[i]=max;
            }
        }
    }
}

(3)时间复杂度:O(n^2);空间复杂度:O(1).


评分及理由

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

得分:2分

理由:学生给出了暴力解法的基本思想,即对于每个元素A[i]向后遍历计算乘积并取最大值。这个思路是可行的,能够正确解决问题。但是,题目要求"设计时间空间上尽可能高效的算法",而暴力解法的时间复杂度为O(n²),并非高效算法。标准答案采用的是O(n)的线性扫描方法。因此,学生的答案虽然正确但不够高效,扣2分。

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

得分:3分

理由:

  • 代码逻辑基本正确,能够实现暴力解法
  • 存在多处逻辑错误:
    • 函数参数缺少res[]和n参数(扣1分)
    • 初始化res数组的while循环是死循环,应该用for循环(扣1分)
    • 变量命名不规范,使用max作为变量名(扣0.5分)
    • 没有考虑A[i]本身可能大于乘积的情况(扣0.5分)
    • 缺少必要的注释(扣1分)
  • 代码能够基本实现算法思想,但存在较多问题

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

得分:2分

理由:学生正确分析了暴力解法的时间复杂度O(n²)和空间复杂度O(1),这部分分析准确无误,给满分。

题目总分:2+3+2=7分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发