题目描述:给定长度为N的数组,只允许用乘法,求任意N-1个元素的乘积最大值
思路:
(1)直接选出任意N-1个元素求结果
(2)对第i个元素,记录其左边以及右边的元素乘积,最后遍历一遍,求l[i]*r[i]的最大值即可
1 #include <iostream> 2 #include <queue> 3 #include <climits> 4 #include <algorithm> 5 #include <memory.h> 6 #include <stdio.h> 7 #include <ostream> 8 #include <vector> 9 #include <list> 10 #include <cmath> 11 #include <string> 12 #include <stdexcept> 13 #include <stack> 14 using namespace std; 15 16 int l[100]; 17 int r[100]; 18 void fun(int a[],int n) 19 { 20 int i; 21 l[0] = 1; 22 for(i = 1 ; i < n ; ++i) 23 { 24 l[i] = l[i-1]*a[i-1]; 25 } 26 r[n-1] = 1; 27 for(i = n-1 ; i > 0 ; --i) 28 { 29 r[i] = r[i+1]*a[i+1]; 30 } 31 int maxN = 0; 32 for(i = 0; i < n ; ++i) 33 { 34 maxN = max(maxN,l[i]*r[i]); 35 } 36 return; 37 } 38 39 int main() 40 { 41 return 0; 42 }