zoukankan      html  css  js  c++  java
  • 第28章:最大连续乘积子串

    -2.5 4 0 3 0.5 8 -1Ans:(3,0.5,8)

    template<typenameComparable>

    Comparable maxprod(constvector<Comparable>& v)

    {

     int i;

     Comparable maxProduct =1;

     Comparable minProduct =1;

     Comparable maxCurrent = 1;

     Comparable minCurrent =1;

     

     for(inti=0;i<v.size();i++)

     {

      maxCurrent *= v[i];

      minCurrent *= v[i];

      if(maxCurrent >maxProduct)

       maxProduct =maxCurrent;

      if(minCurrent >maxProduct)

       maxProduct =minCurrent;

      if(maxCurrent <minProduct)

       minProduct =maxCurrent;

      if(minCurrent <minProduct)

       minProduce =minCurrent;

      if(minCurrent >maxCurrent)

      Swap(maxCurrent,minCurrent);

      if(maxCurrent < 1)

       maxCurrent = 1;

      return maxProduct;

     }

    }

     

     

    *直接用动态规划求解

    状态转移方程:max表示以a结尾的最大连续子串

    Max = max{a,Max[i-1]*a,Min[i-1]*a};

    Min =min{a,Max[i-1]*a,Min[i-1]*a};

     

    C++代码:

    double func(double* a ,constint n)

    {

     double* maxA = newdouble[n];

     double* minA = newdouble[n];

     msxA[0] = min[A] = a[0];

     double value = maxA[0];

     for(int i=1;i<n;i++)

     {

      maxA[i] =max(max(a[i],maxA[i-1]*a[i]),minA[i-1]*a[i]);

      minA[i] =min(,min(a[i],maxA[i-1]*a[i]),minA[i-1]*a[i]);

      vlaue =max(value,maxA[i]);

     }

     delete [] maxA;

     delete [] minA;

     return value;

    }

  • 相关阅读:
    微信验证代码
    微信内置浏览器的JS API
    伪类和伪元素
    asp.net core mvc 脚手架搭建过程介绍
    C#无锁内存队列
    关于微软OWIN的一篇好文章
    安装了Win10预览版10074,不能设置开发模式的bug解决
    关于Quartz的一些经历
    MEF接口应用初探
    简单的接口框架
  • 原文地址:https://www.cnblogs.com/lsx1993/p/4841552.html
Copyright © 2011-2022 走看看