最大连续子序列乘积

来源:互联网 发布:历代windows 编辑:程序博客网 时间:2024/06/09 17:45
不多说,可用动态规划解,找准转移方程,有两个,最后选一个作为最大值; 此处针对int型数据,对于浮点型,自己再做改动;

#include <iostream>#include <string.h>using namespace std; int maxn[2020];int minn[2020];int a[2020];int min(int a,int b,int c){int minn;minn=a<b?a:b;minn=minn<c?minn:c;return minn;}int max(int a,int b,int c){int maxn;maxn=a>b?a:b;maxn=maxn>c?maxn:c;return maxn;}int main (){    int n,big=-9999;    cin>>n;    memset(a,0,sizeof(a));    memset(minn,0,sizeof(minn));    memset(maxn,0,sizeof(maxn));    for (int i=0;i<n;i++)    cin>>a[i];    minn[0]=maxn[0]=a[0];//i==0,min与max为其本身    for (int i=1;i<n;i++)    {    minn[i]=min(a[i],minn[i-1]*a[i],maxn[i-1]*a[i]);// 方程1    maxn[i]=max(a[i],minn[i-1]*a[i],maxn[i-1]*a[i]);//方程2    if (maxn[i]>big)    big=maxn[i];}cout<<big<<endl;return 0;} 


原创粉丝点击