zoukankan      html  css  js  c++  java
  • 南阳理工--44 子串和

    描述给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1<=x<=y<=n。

     
    输入
    第一行是一个整数N(N<=10)表示测试数据的组数)
    每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的一行里有n个整数I(-100=<I<=100),表示数列中的所有元素。(0<n<=1000000)
    输出
    对于每组测试数据输出和最大的连续子串的和。
    样例输入
    1
    5
    1 2 -1 3 -2
    
    样例输出
    5
    提示
    输入数据很多,推荐使用scanf进行输入
     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 int a[1000000+10];
     5 int main()
     6 {
     7     int t,n;
     8     int maxx;
     9     scanf("%d",&t);
    10     while(t--)
    11     {
    12         maxx=0;
    13         scanf("%d",&n);
    14         for(int i=0;i<n;i++)
    15             scanf("%d",&a[i]);
    16         int sum=0;
    17         for(int i=0;i<n;i++)
    18         {
    19             sum+=a[i];
    20             if(sum<0)
    21             {
    22                 sum=0;
    23             }
    24             maxx=max(maxx,sum);
    25                 
    26         } 
    27         if(maxx==0)      //忽略了全负的情况
    28         {
    29           sort(a,a+n);
    30           printf("%d
    ",a[n-1]);    
    31         } 
    32         else 
    33         printf("%d
    ",maxx); 
    34     }
    35     return 0;
    36 }
  • 相关阅读:
    4.变量以及类型
    3.注释
    2.第一个python程序
    1.认识Python
    DB安装
    DB2<RedHed Linux> 创建数据库
    win 7设置主机域名
    FTP 错误1
    FTP 其他设置
    VM浏览器不能访问
  • 原文地址:https://www.cnblogs.com/hss-521/p/7327333.html
Copyright © 2011-2022 走看看