zoukankan      html  css  js  c++  java
  • 最大子序列

    /*
    题目描述
    输入n个元素组成的序列S,你需要找出一个乘积最大的连续子序列,
    如果这个最大的乘积不是正数,则输出-1
    输入
    输入包括多组数据,每组数据第一行为正整数n,第二行为n个元素组成的序列
    S,1<=n<=18,-10<=Si<=10
    输出
    输出每组数据的结果后换行
    样例输入
    3
    2 4 -3
    5
    2 5 -1 2 -1
    样例输出
    8
    20
    */

    代码如下:

     1 #include<iostream>
     2 using namespace std;
     3 long long int Max(int *x,int n)
     4 {
     5     long long int t,max=0; 
     6     for(int i=0;i<n-1;i++)//连续的最大子序列 
     7     {
     8         for(int j=i+1;j<n;j++)
     9         {
    10             t=1;
    11             for(int k=i;k<=j;k++)//从0到n的子序列,从1到n的子序列。。。 
    12             {
    13                 t=t*x[k];
    14                 if(t>max) max=t;  
    15             }
    16         }
    17     }
    18     return max;
    19 }
    20 int main()
    21 {
    22     int x[20];
    23     int n;
    24     long long int t;
    25     long long int max; 
    26     while(cin>>n)
    27     {
    28         for(int i=0;i<n;i++) cin>>x[i];
    29         max=Max(x,n);   
    30         if(n==1)
    31         {
    32             if(x[n-1]>=0) cout<<x[n-1]<<endl;
    33             else cout<<"-1"<<endl;
    34             continue; 
    35         } 
    36         if(max<0 ) cout<<"-1"<<endl;
    37         else cout<<max<<endl;
    38     }
    39       
    40 }
  • 相关阅读:
    信息检索笔记
    北大课程(变态心理学)
    My life
    Excel小技巧(随机点名)
    Flask基础
    CTF
    GDB
    LD_PRELOAD
    AFL-数据变异
    AFL入门
  • 原文地址:https://www.cnblogs.com/baigg1995/p/4583349.html
Copyright © 2011-2022 走看看