題目:乙個有n個數的整數陣列 取其中n-1個元素的子陣列 求子陣列的最大乘積 不能用除法。
這道題自己沒有寫對,沒有考慮到負數的情況,只是單純的想去掉最小的數。 但是若有負數 -5 -4 -3 中-5 * -4 = 20更大。
需要先統計正數、負數和0的個數,再分類討論。考察的其實就是細心和耐心。
//答案解法
int getmaxproductanswer(int * a, int
alen)
else
if(a[i] > 0
)
else
}if(numzero >= 2
)
else
if(numzero == 1
)
else
//偶數個負數 去掉0}}
}else
}for( ;i < alen; i++)
}for(i = 0; i < alen; i++)}}
else
//偶數個負數
}for( ;i < alen; i++)
}for(i = 0; i < alen; i++)}}
else
//沒有正數 去掉負數絕對值最大的
}for( ;i < alen; i++)
}for(i = 0; i < alen; i++)}}
}}
return
maxproduct;
}int
main()
;
int maxproduct = getmaxproductanswer(a, 10
);
return0;
}
程式設計之美2 13 子陣列最大乘積
問題描述 給定乙個長度為n的整數陣列,只允許用乘法,不能用除法,計算任意 n 1 個數的組合乘積中最大的一組,並寫出演算法的時間複雜度。解法 1.暴力解法 o n 2 2.前字尾法 o n 3.統計法 o n 具體思路和 1.暴力解法 思路 利用兩層迴圈,依次刪掉乙個,其餘的做乘法,計算出最大的。1...
程式設計之美 2 13 子陣列的最大乘積
1.簡述 給定乙個長度為n的整數陣列,只允許用乘法,不能夠用除法,計算任意 n 1 個數的組合中乘積最大的一組,並寫出演算法時間複雜度。2.思路 題目中要求不能用除法,實際上就是否定了將所有數乘起來,然後分別去除每個數字的方法,實際上這種方法也不好實現,因為如果數字中有0的話,都乘起來就是0,還要除...
程式設計之美 2 13 子陣列的最大乘積
1.簡述 給定乙個長度為n的整數陣列,只允許用乘法,不能夠用除法,計算任意 n 1 個數的組合中乘積最大的一組,並寫出演算法時間複雜度。2.思路 題目中要求不能用除法,實際上就是否定了將所有數乘起來,然後分別去除每個數字的方法,實際上這種方法也不好實現,因為如果數字中有0的話,都乘起來就是0,還要除...