文章
130
粉丝
0
获赞
0
访问
6.0k
1):首先对数组进行排序,其次判断A[i]是正是负,如果是正数则让它与最大的正数相乘,如果是负数则和最小的负数相乘,如果是0,则结果直接是0。
2): void CallMulMax(int A[], int res[],int n){
A[n].sort(); //首先对数组A[n]进行排序
int j=0;
for(int i=0;i<n;i++){
if(A[i]==0)res[j++]=0;
else if(A[i]<0)res[j++]=A[i]*A[0];
else res[j++]=A[i]*A[n-1];
}
3):因为对数组进行了排序因此时间复杂度是o(nlogn),空间复杂度是o(1);
评分及理由
(1)得分及理由(满分4分)
得分:2分
理由:学生提出的思路与标准答案不同,但存在逻辑错误。排序后直接取最大或最小值的乘积并不能保证得到正确的res[i]值,因为题目要求的是A[i]与A[j](i ≤ j ≤ n-1)乘积的最大值,而排序后改变了元素的相对位置,可能导致错误的j值。此外,未考虑负数相乘可能得到更大的正数的情况。
(2)得分及理由(满分7分)
得分:3分
理由:代码实现与标准答案不一致,且存在逻辑错误。排序后直接取A[0]或A[n-1]的乘积无法保证正确性。此外,代码中未正确处理负数相乘的情况,且未考虑动态更新最大值和最小值的逻辑。代码注释和逻辑清晰度不足。
(3)得分及理由(满分2分)
得分:1分
理由:时间复杂度分析正...
登录后发布评论
暂无评论,来抢沙发