求数组array【n】中任意n-1个数乘积的最大值
去掉i号下标数字的乘积为i的前面的数乘积front(i)乘以后边数字的乘积back(i),只要设置好front和back函数,遍历一次就可以。
front【i】=front【i-1】*array【i-1】(1<=i<=n-1)
front【0】=1;
back【i】=back【i+1】*array【i+1】(0<=i<=n-2)
back【n-1】=1;
#include<iostream>
#include<climits>
using namespace std;
int main(){
const int n=7;
int array[n]={3,0,0,2,6,7,8};
int front[n],back[n];
front[0]=back[n-1]=1;
for(int i=1;i<n;++i) front[i]=front[i-1]*array[i-1];
for(int i=n-2;i>=0;--i) back[i]=back[i+1]*array[i+1];
int tmp=INT_MIN;
for(int i=0;i<n;++i)
if(back[i]*front[i]>tmp) tmp=back[i]*front[i];
cout<<tmp;
return 0;}