文章
173
粉丝
0
获赞
1
访问
11.9k
(1)先遍历一遍A[n]数组 用一个nummax和一个nummin数组记录A[n]中的最大值和最小值 然后再遍历一遍A[n]数组 如果A[i]>0 则res[i] = A[i]*nummax A[i]<0 则res[i] = A[i]*nummin
(2)
#define nummax = INT32_MIN;//nummax用来记录数组最大值
#define nummin = INT32_MAX;//nummin记录数组最小值
void CallMulMax(int A[], int res[],int n){
for(int i = 0 ; i<n ;i++){
if(A[i] > nummax){
nummax = A[i];//遍历数组 得出数组最大值
}
if(A[i] < nummin){
nummin = A[i];//遍历数组 得出数组最小值
}
}
for(int j = 0 ; j < n ; j++){
if(A[i] > 0){
res[i] = A[i] * nummax;//如果A[i]>0则res[i]= A[i] * nummax
} else{
res[i] = A[i] * nummin;//如果A[i]<0则res[i]= A[i] * nummin
}
}
}
(3)时间复杂度o[n],空间复杂度o[1]
评分及理由
(1)得分及理由(满分4分)
得分:2分
理由:学生的基本思想部分正确,但存在逻辑错误。学生提出遍历数组记录最大值和最小值,然后根据A[i]的正负决定乘积的对象。然而,这种方法忽略了乘积的最大值可能出现在当前元素与后续某个特定元素的乘积中,而不仅仅是全局最大值或最小值的乘积。例如,在数组{1,4,-9,6}中,res[2]应为81(-9*-9),但按照学生的方法会得到-9*6=-54,显然错误。
(2)得分及理由(满分7分)
得分:3分
理由:代码实现中存在多处错误:
#define nummax = INT32_MIN;
和#define nummi...
登录后发布评论
暂无评论,来抢沙发