最大子段和-DP方法-程序员宅基地

技术标签: 数据结构与算法  

给出N个数字, 计算出最大的子段和。

Input

第一行给出一个数字 T(1<=T<=20) 代表接下来的组数.
接下来每 T 行,开始给出一个数组 N(1<=N<=100000), 接着跟着N个数字.。数据保证最后结果小于2^31。
 

Output

输出最大的字段和

Sample Input

2
5 6 -1 5 4 -7
7 0 6 -1 1 -6 7 -5

Sample Output

14
7
#include<bits/stdc++.h>
using namespace std;
const int MAXN=100005;
int n;
long long a[MAXN],sum,ansum;
pair<int,int>ans;
int main()
{
    
    int T;
    scanf("%d",&T);
    while(T--)
    {
    
        scanf("%d",&n);
        for(int i=1;i<=n;++i)
        {
    
            scanf("%lld",&a[i]);
        }
        bool flag=false;
        for(int i=1;i<=n;++i)
        {
    
            if(a[i]>=0)flag=true;
        }
        if(!flag)
        {
    
            printf("0\n");
            continue;
        }
        int pos=0;
        ansum=-1;
        sum=0;
        for(int i=1;i<=n;++i)
        {
    
            sum+=a[i];
            if(sum<0)
            {
    
                sum=0;
                pos=i;
            }
            else
            {
    

                if(sum>ansum)
                {
    
                    ansum=sum;
                    ans=make_pair(pos+1,i);
                }
                else if(sum==ansum)
                {
    
                    ans=min(ans,make_pair(pos+1,i));
                }
            }
        }
        printf("%lld\n",ansum);
    }
    return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44061561/article/details/94391119

智能推荐

Java 实现双向链表-程序员宅基地

双向链表示意图:以下是双链表相对于单链表的优缺点。优点(1) 可以向前和向后遍历。(2) 如果给出指向要删除的节点的指针,双向链表中的删除操作会更有效率。(3)我们可以在给定节点之前快速插入一个新节点。在单向链表中,要删除一个节点,需要指向前一个节点的指针。为了获得这个前一个节点,有时会遍历列表。在双链表中,我们可以使用前一个指针获取前一个节点。缺点(1) 双链表的每个节点都需要额外的空间用于前一个指针。(2) 所有的操作都需要一个额外的指针来维护。例如,在插入时,我们需要同时修改前一个

oracle--v$lock type字段详解 _v$lock type=ae-程序员宅基地

NameDescriptionADASM Disk AU LockAFAdvisor FrameworkAGAnalytic Workspace GenerationAKGES Deadlock TestAOMultiWriter Object AccessASService Opera_v$lock type=ae

计算机网络配置RIP路由协议,计算机网络实验六rip路由协议配置.doc-程序员宅基地

计算机网络实验六rip路由协议配置.doc 太原理工大学现代科技学院计算机通信网络课程实验报告专业班级学号姓名指导教师太原理工大学现代科技学院实验报告实验名称同组人专业班级学号姓名成绩一、实验目的计算机通信网络实验指导书掌握RIP动态路由协议的配置、诊断方法。二、实验任务1、配置RIP动态路由协议,使得3台CISCO路由器模拟远程网络互联。2、对运行中的RIP动态路由协议进行诊断。三、实验设备CI...

AI模型设计:完美实现C语言调用python训练的tensorflow2.5-gpu循环神经网络模型并进行预测_c语言调用训练好的神经网络-程序员宅基地

ck:AI模型设计:C语言版 TensorFlow2.x安装与使用train.py:import numpy as npimport tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import layers, Sequentialfrom tensorflow.keras.layers import Dense, LSTM, InputLayer, Bidirectional, TimeDistributed,_c语言调用训练好的神经网络

DHCP中继配置(华为ensp中所配置)_[huawei-gigabitethernet0/0/1]ip add 192.168.10.1 ^-程序员宅基地

1.拓扑图:2.各个路由器中的命令配置AR1(服务器)//启用DHCP[Huawei]dhcp enable//在接口配置IP,在路由器上配置静态路由(本实验使用的是OSPF使路由器连通)[Huawei]inter g0/0/0[Huawei-GigabitEthernet0/0/0]ip add 100.1.1.2 24[Huawei]ospf[Huawei-ospf-1]a..._[huawei-gigabitethernet0/0/1]ip add 192.168.10.1 ^ error: unrecognized comma

shell脚本4_kshell4-程序员宅基地

基础正则表达方式1.查找特定字符2.利用中括号“[]”来查找集合符号3.查找行首“^”与行尾字符“$”4.查找任意一个字符“.”与重复字符5.查看连续字符范围“{ }”Sed命令常见用法1.输出符合条件的文本2.删除符合条件的文本3.替换4.迁移符合条件的文本5.使用脚本编辑文件1.awk常见用法 2用法2.按字段输出文本..._kshell4

随便推点

hive null and empty string--- 系列(一)-- TextFile_hive empty-程序员宅基地

目的:预将hive中 null 与empty string 统一,便捷后续开发问题:orc 文件 使用 SET SERDEPROPERTIES('serialization.null.format' = '') 失效解决方案_hive empty

android修改shell串口号,[Note] 2021-01-15 Android shell/串口中使用 wpa_cli 连接Wi-Fi-程序员宅基地

系统:macOS,串口工具:SecureCRT Version 9.0.0投屏工具:scrcpy板子:rk3399 android 7.1笔者是Android Studio的开发环境,直接把 Android SDK 的一套工具 (/Users/xxx666/Library/Android/sdk/platform-tools)加入 PATH 就搞定了在做一些的 Android 板相关产品时,为了快...

Hadoop-2.5.1安装文档_hadoop client 2.5.1-程序员宅基地

前言本文档针对hadoop2.5.1生态圈的安装,版本选择如下:Jdk_1.7.0_45Zookeeper 3.4.6Hadoop 2.5.1安装顺序:系统环境搭建Hadoop集群安装的软件准备Hadoop集群搭建环境说明每台机器的服务Zookeeper集群: 针对大型分布式系统的可靠协调系统JournalNode集群:存储和管理对hdfs操作日志_hadoop client 2.5.1

filebeat和logstash测试验证_logstash启动成功的判断-程序员宅基地

以下都是基于windows系统进行配置验证1、 安装filebeat下载安装压缩包进行解压,确认为64位还是32位。对filebeat进行配置。选择filebeatyml文件进行配置filebeat.inputs:type: logenabled: truepaths: D:/elk_test/test-file/*.txtdocument_type: srv_sys_elasticsearchfields:logtype: srv_sys_elasticsearchoutput_logstash启动成功的判断

web3.js 实现调用狐狸钱包完成用户登录_对接小狐狸钱包签名登录_qq80164590的博客-程序员宅基地

用户帐户在以太坊的各种环境中使用,包括作为标识符和用于签署交易。首先需要判断用户浏览器有没有安装Metamask插件 if (typeof window.ethereum.isMetaMask === 'undefined') { alert('看起来您需要一个 Dapp 浏览器才能开始使用。') alert('请安装 MetaMask!') }如果用户没有安装,提示他安装,否则无法继续使用。下一步我们讲请求狐狸钱包,访问账户,获取_对接小狐狸钱包签名登录