题目描述:给定长度为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 }