博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求子数组最大和
阅读量:6279 次
发布时间:2019-06-22

本文共 539 字,大约阅读时间需要 1 分钟。

这个问题是一个经典的动态规划问题。思路简述如下:

对于某个中间状态S(i),设元素a[i]之前的数组累加和为sum,a[i+1]...a[n]中与a[i]邻接的和最大的数组为amax,a[i+2]...a[n]中的最大数组为rmax。这里有三种情况。

1. a[i] >= 0. 因为a[i]与amax相邻,故和最大数组应为MAX(sum+a[i]+amax, rmax).

2. a[i] < 0 且 |a[i]| < sum,此时,a[i] + sum >0,显然sum+a[i]+amax构成一个比amax更大的数组,因此最大数组仍应为MAX(sum+a[i]+amax, rmax).

3. a[i] < 0 且 |a[i]| >= sum,此时sum+a[i]+amax构成的数组不会比amax更大,因此可以放弃a[i],最大数组应为MAX(amax, rmax).

于是问题转化为下一状态S(i+1),情况1, 2下sum = sum + a[i],情况3 可将sum=0。 

对于a[0], sum=0, 整个计算过程sum始终为非负。

转载于:https://www.cnblogs.com/k330/archive/2012/11/21/2780052.html

你可能感兴趣的文章
HTML-color:rgb()-颜色渐进
查看>>
数据库实例: STOREBOOK > 表空间 > 编辑 表空间: UNDOTBS1
查看>>
Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)...
查看>>
Javascript防冒泡事件与Event对象
查看>>
managed domain与unmanaged domain
查看>>
《中国人工智能学会通讯》——11.47 领域文本中的实体链接技术
查看>>
刚毕业不久,就在人工智能上做出这样大贡献
查看>>
中国人工智能学会通讯——迎接深度学习的“大”挑战(下) 1.2 深度学习的挑战和机遇...
查看>>
不可不看!即将发布的浪潮高端存储
查看>>
锐捷工程师:深夜敲击键盘的样子,很燃
查看>>
数据中心未来的商业化系统
查看>>
《算法技术手册》一2.3 最好、最坏和平均情况下的性能分析
查看>>
LTE-Hi渐行渐近 有望打破4G深度覆盖局限
查看>>
Nuance报告:医护人员如何从人工智能中受益
查看>>
JavaScript异步与Promise实现
查看>>
Android内存泄漏产生的6大原因
查看>>
F5 Networks任命Adam Judd领导亚太区销售工作 将加速区域云和安全业务发展
查看>>
将给企业带来巨大转变的八项“变革式”技术趋势
查看>>
ICML精彩论文:学界与业界联手,通过监测无线信号来判断睡眠阶段
查看>>
欧盟下周或有条件批准微软收购领英
查看>>