本文共 677 字,大约阅读时间需要 2 分钟。
题目描述:
给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合中乘积最大的一组,并写出算法的时间复杂度。
#include#include #include using namespace std; /*给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合中乘积最大的一组,并写出算法的时间复杂度。*//*方法1:s[i]表示0到i-1乘积,t[i]表示i+1到n乘积,有Max={s[i]*t[i]}*/long caculate(int arr[],int length){ long maxV=LONG_MIN; long *s=new long[length+1]; long *t=new long[length+1]; s[0]=1,t[length-1]=1; for(int i=1;i<=length;++i) s[i]=s[i-1]*arr[i-1]; for(int i=length-2;i>=0;--i){ t[i]=t[i+1]*arr[i+1]; } for(int i=0;i 0){opt++;minO=min(minO,arr[i]);} else zero++; } if(zero>1)return 0; //1个0的情况 if(zero==1){ if(neg&1)return 0;//奇数个负数 else{ for(int i=0;i
转载地址:http://qbvvi.baihongyu.com/