文章
986
粉丝
5
获赞
20
访问
255.3k

评分及理由
(1)得分及理由(满分4分)
得0分。学生的基本思想存在逻辑错误。题目要求计算A[i]与A[j](i≤j≤n-1)乘积的最大值,而学生的思路是找到整个数组的最大值和最小值,然后根据A[i]的正负分别乘以最大值或最小值。这种方法不正确,因为乘积的最大值可能出现在当前元素与后续某个特定元素的乘积中,而不是整个数组的极值。例如题目示例A[]={1,4,-9,6},按照学生的方法,整个数组最大值是6,最小值是-9,那么res[0]=1×6=6(正确),res[1]=4×6=24(正确),res[2]=(-9)×(-9)=81(正确),但res[3]=6×6=36(正确)这个正确结果是巧合,因为最后一个元素只能与自己相乘。如果数组是A[]={-2, -3, 1},正确res应该是{6, -3, 1},但学生方法会得到{6, 9, 1},错误。
(2)得分及理由(满分7分)
得0分。代码实现基于错误的思想,存在多处逻辑错误:
1. 只考虑了整个数组的最大最小值,没有考虑i≤j的限制
2. 没有处理A[i]=0的情况(代码中只有if(A[i]>0)和else if(A[i]<0),没有else分支)
3. 最后一个元素应该与自己相乘,但学生代码中如果A[n-1]不是最大值或最小值,可能会错误计算
4. 代码语法有误:else后面不能直接跟条件判断,应该是else if
(3)得分及理由(满分2分)
得1分。时间复杂度和空间复杂度的分析基本正确,都是O(n)和O(1),但由于算法本身是错误的,只能给部分分数。
题目总分:0+0+1=1分
登录后发布评论
暂无评论,来抢沙发