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;
    }
  • 相关阅读:
    Battle ships(二分图,建图,好题)
    棋盘游戏(二分图,删边)
    Girls' research(manacher)
    jenkins配置发送测试结果邮件
    Win10电脑如何更改开机启动项
    Ubuntu 18.04 固定pycharm图标固定到启动栏
    ubuntu下Fiddler抓包
    一个数据去重sql
    JENKINS针对不同项目组对用户进行权限分配
    jenkins添加用户
  • 原文地址:https://www.cnblogs.com/yi-ye-zhi-qiu/p/7881670.html
Copyright © 2011-2022 走看看