码迷,mamicode.com
首页 > 其他好文 > 详细

编程之美-子数组的最大乘积

时间:2014-08-09 18:14:28      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   for   div   时间   算法   log   

给定一个长度为N的整数数组,只允许用乘法不允许用除法,计算N-1个数组合的乘积最大的一组,并写出算法的时间复杂度。

long long s[MAXN];
long long t[MAXN];

int main()
{
    int n, i;
    cin >> n;
    for (i=1; i<=n; i++)
        cin >> A[i];
    // 从前往后用叠乘法
    s[0] = 1;
    for (i=1; i<n; i++)
        s[i]=A[i]*s[i-1];
    // 从后往前用叠乘法
    t[n+1] = 1;
    for (i=n; i>1; i--)
        t[i]=A[i]*t[i+1];
    // 计算出n-1个n-1数连乘
    for (i=0; i<=n-1; i++)
        s[i] = s[i]*t[i+2];
    long long maximum = s[0];
    // 获取其中的最大值
    for (i=1; i<=n-1; i++)
        maximum = max(maximum, s[i]);
    cout << maximum << endl;
}

 

编程之美-子数组的最大乘积,布布扣,bubuko.com

编程之美-子数组的最大乘积

标签:style   blog   color   for   div   时间   算法   log   

原文地址:http://www.cnblogs.com/notlate/p/3901174.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!