zoukankan      html  css  js  c++  java
  • 求一个浮点数的连续子序列最大乘积 (2013 小米校园招聘笔试题)

    给定一个浮点数的序列,F1F2F3,……,Fn(1<=n<=1000),定义Ps,e(1<=s<=e<=n)为子序列Fi(s=<i<=e)的所有元素的乘积。写一个函数,求P的最大值。输入保证对任意se, P不会超过double能表示的数据范围。

    比如序列:

    -2.5 ,2 ,0, 4 ,0.5 ,10 ,0.1

     1 // 最大的子序列积.cpp : 定义控制台应用程序的入口点。
     2 
     3 #include "stdafx.h"
     4 
     5 double max(double a,double b,double c)
     6 {
     7     double max_v=a;
     8     if(b>a)
     9         max_v=b;
    10     if(c>max_v)
    11         max_v=c;
    12     return max_v;
    13 }
    14 
    15 double min(double a,double b,double c)
    16 {
    17     double min_v=a;
    18     if(b<a)
    19         min_v=b;
    20     if(c<min_v)
    21         min_v=c;
    22     return min_v;
    23 }
    24 
    25 double Maxmultiple(int count,double *f)
    26 {
    27     double *Min=new double[count+1];//Max[i]代表以f[i]结尾的最大连续序列的乘积
    28     double *Max=new double[count+1];//Min[i]代表以f[i]结尾的最小连续序列的乘积
    29     Min[0]=f[0];
    30     Max[0]=f[0];
    31     double max_val=Max[0];
    32     for(int i=1;i<count;i++)
    33     {
    34         Max[i]=max(f[i],f[i]*Max[i-1],f[i]*Min[i-1]);
    35         Min[i]=min(f[i],f[i]*Max[i-1],f[i]*Min[i-1]);
    36         if(Max[i]>max_val)
    37             max_val=Max[i];
    38     }
    39     return max_val;
    40     delete [] Max;
    41     delete [] Min;
    42 }
    43 
    44 void main()
    45 {
    46     double maxmul;
    47     double a[]={2.5,-2,0,4,0.5,10,0.1};
    48     int len=sizeof(a)/sizeof(a[0]);
    49     maxmul=Maxmultiple(len,a);
    50     printf("maxmul=%f\n",maxmul);
    51 }
  • 相关阅读:
    学习随笔
    javaWeb(1)
    javaWeb(3)----EL,JSTL
    开发时要注意的地方!!!
    Mybatis(0)——基础入门,hello,Mybatis! (使用IDEA)
    SpringAOP——通过JdbcTemplate连接数据库,并使用事务(Transactional)(使用IDEA进行编程)
    SpringAOP基础实战知识------hello!AspectJ (使用IDEA进行编程)
    5 jQuery
    4.1 js 配合dom 案例
    4.js
  • 原文地址:https://www.cnblogs.com/xingele0917/p/2711638.html
Copyright © 2011-2022 走看看