文章
29
粉丝
0
获赞
0
访问
1.0k
(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分
理由:
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了暴力解法的时间复杂度O(n²)和空间复杂度O(1),这部分分析准确无误,给满分。
题目总分:2+3+2=7分
登录后发布评论
暂无评论,来抢沙发