zoukankan      html  css  js  c++  java
  • 2016年 河南工业大学校赛 G题.最大字段和

    最大子段和

    时间限制: 1 秒  内存限制: 64 MB  |  提交: 524  解决: 160
      

    题目描述

    一个大小为n的数组a1到an(−10^4≤ai≤10^4)。请你找出一个连续子段,使子段长度为奇数,且子段和最大。

    输入

    第一行为T(1≤T≤5),代表数据组数。
    之后每组数据,第一行为n(1≤n≤10^5),代表数组长度。
    之后一行n个数,代表a1到an

    输出

    每组数据输出一行,表示满足要求的子段和最大值

    样例输入

    1
    4
    1 2 3 4
    

    样例输出

    9
    思路:由于要求 奇数 长度的连续子串 , 所以 选取 奇数起点 和 偶数起点 , 然后 改一下 最大连续字段和 就好
    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    int a[100005];
    int main(void) {
        int T, n, i, sum, ans;
        scanf("%d", &T);
        while(T--) {
            scanf("%d", &n);
            for(i=1; i<=n; i++)
                scanf("%d", &a[i]);
            // 以奇数 位置 字符 开始 遍历 奇数长度的 最大连续字段和 
            ans = sum = a[1];
            for(i=2; i<=n-1; i+=2) {
                sum += a[i]+a[i+1];
                if(sum<a[i+1])
                    sum = a[i+1];
                ans = max(ans, sum);
            }
            // 以偶数 位置 字符 开始 遍历 奇数长度的 最大连续字段和 
            sum = a[2];
            for(i=3; i<=n-1; i+=2) {
                sum += a[i]+a[i+1];
                if(sum<a[i+1])
                    sum = a[i+1];
                ans = max(ans, sum);
            }
            printf("%d
    ", ans);
        }
        return 0;
    }
  • 相关阅读:
    VMware设置共享文件夹
    非奇异阵
    ICP算法使用遇到的问题
    osgEarth编译的一些问题
    [OpenCV](1)安装与测试
    [PCL]1 PCL点云库安装
    【转载】:【C++跨平台系列】解决STL的max()与numeric_limits::max()和VC6 min/max 宏冲突问题
    matlab将多条曲线绘制在一起
    C++问题
    SLAM学习笔记(3)相关概念
  • 原文地址:https://www.cnblogs.com/yi-ye-zhi-qiu/p/7881670.html
Copyright © 2011-2022 走看看