Description
给定n(1<=n<=100000)个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n。 例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。

注意:本题目要求用动态规划法求解,只需要输出最大子段和的值。

Input
第一行输入整数n(1<=n<=100000),表示整数序列中的数据元素个数;

第二行依次输入n个整数,对应顺序表中存放的每个数据元素值。

Output
输出所求的最大子段和

Sample
Input
6
-2 11 -4 13 -5 -2
Output
20

#include<bits/stdc++.h>using namespace std;#define maxsize 100010typedef struct node
{int *elem;int length;int listsize;
} List;void creat(List &L, int n)
{L.elem = new int [maxsize];//L.elem = (int*)malloc(maxsize*sizeof(int));L.length = n;L.listsize = maxsize;for(int i = 0; i < L.length; i++)scanf("%d", &L.elem[i]);
}int maxsum(List &L)
{List R = L;int sum = 0;for(int i = 1; i < R.length; i++)//这个地方不好理解,可以把数写在纸上手动模拟一下,会好的多{if(R.elem[i - 1] > 0)R.elem[i] = R.elem[i - 1] + R.elem[i];elseR.elem[i] = L.elem[i];}for(int i = 0; i < R.length; i++){if(R.elem[i] > sum)sum = R.elem[i];}return sum;
}
int main()
{int n, sum;List L;scanf("%d",&n);creat(L, n);sum = maxsum(L);printf("%d\n", sum);return 0;
}

顺序表应用8:最大子段和之动态规划法相关推荐

  1. 顺序表应用7:最大子段和之分治递归法

    Description 给定n(1<=n<=50000)个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最 ...

  2. 数据结构(07)— 线性顺序表基本操作

    1. 顺序表结构 #define MaxLen 50typedef struct {int data[MaxLen]; // 定义一个数组来存储线性表中所有元素int len; // 存储线性表的长度 ...

  3. 数据结构(04)— 线性顺序表实战

    1. 设计思路 本实战的实质是完成对学生成绩信息的建立.查找.插入.修改.删除等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运 ...

  4. 删除顺序表中所有的的重复数据

    顺序表的结果设计如下所示 顺序表的结构体设计和头节点的结构体设计如下链接: 顺序表的插入_神厨小福贵!的博客-CSDN博客按位置插入我们知道 顺序表的特点就是 无论在逻辑上还是地址上都是连续的先看顺序 ...

  5. 顺序表的删除(按位置删、头删、尾删)

    顺序表的结构体设计: #define MAXSIZE 10 //顺序表一般固定大小 struct SeqList {int data[MAXSIZE];int capacity: //顺序表容量大小i ...

  6. 数据结构与算法(8-1)顺序表查找及优化

    目录 一.顺序表查找 二.顺序表查找优化(重点) 总代码 一.顺序表查找 从头到尾或从尾到头查找. //顺序表查找(需要判断两次) int ListSearch(char ch) {for (int ...

  7. 数据结构与算法(2-1)线性表之顺序存储(顺序表)

    顺序表用数组存储数据元素(可以是结构体数组,也可以是结构体内的元素数组),插入和删除等等也是类似数组的操作. 顺序表优势: 1.无须为表示表中元素之间的逻辑关系而增加额外的存储关系,就是直接的顺序: ...

  8. 顺序表应用6:有序顺序表查询

    顺序表应用6:有序顺序表查询 Time Limit: 7MS Memory Limit: 700KB Submit Statistic Problem Description 顺序表内按照由小到大的次 ...

  9. c语言顺序表有效元素长度,用C语言描述的顺序表类型

    2.2.1 顺序表 用C语言描述的顺序表类型如下所示: // 存储结构 const int MAXLISTSIZE=80; // 预设的存储空间最大容量 typedef struct { ElemTy ...

最新文章

  1. CentOS6 英文系统安装ibus
  2. Tech·Ed 2006博客园聚会
  3. 【iOS】Xcode 使用 CocoaPods 导入第三方库后没有提示
  4. 二维数组 \n是换行 三目运算符 if语句示例
  5. mysql1401错误_mysql错误代号-I(1401~1450)
  6. php+curlmultiinit_多线程 - PHP的curl_multi_init并发测试问题
  7. WEBBASE篇: 第八篇, JavaScript知识2
  8. Even for transaction data request, metadata is still needed as prerequisite
  9. BAT人脸识别功能第二步-人脸检测
  10. Hitv8 文件批量重命名工具
  11. 《面向对象程序设计》课程作业(七)
  12. 客户端脚本selectivizr,PIE,Respond.js
  13. gitlab创建分支上传文件_代码管理-gitlab使用方法建议
  14. Centos磁盘管理和文件系统管理
  15. wireless中添加country code的方法(wireless-regdb crda)
  16. Docker入门学习
  17. PS零基础入门系列-PS图层样式案例实用技巧
  18. 苹果电脑怎么打开计算机管理,mac打开的软件怎么关 苹果电脑系统怎么关闭打开的程序...
  19. Android开发中的一些问题
  20. cc1101初始化c语言程序,STC89C52单片机驱动CC1101无线模块的发送C语言程序

热门文章

  1. DNS协议详解及报文格式分析
  2. 使用Skywalking实现全链路监控
  3. jboss7 加载module过程
  4. spring启动过程之源码跟踪(续beanfactory)--spring Debug
  5. Lesson 9.5 从0实现多层神经网络的正向传播
  6. BM惊爆:EOS一周年工作KPI
  7. jQuery快速入门
  8. 孙宏斌谈贾跃亭哽咽:“我一定把乐视做成一个好公司”
  9. 以人为本的机器学习:谷歌人工智能产品设计概述 By 机器之心2017年7月17日 12:13 取代了手动编程,机器学习(ML)是一种帮助计算机发现数据中的模式和关系的科学。对于创建个人的和动态的经历
  10. Exercise: Linear Regression