最大子序列和问题
来源:互联网 发布:veket linux下载 编辑:程序博客网 时间:2024/05/18 00:45
问题:
给定一整数序列A1, A2,... An (可能有负数),求A1~An的一个子序列Ai~Aj,使得Ai到Aj的和最大
给定一整数序列A1, A2,... An (可能有负数),求A1~An的一个子序列Ai~Aj,使得Ai到Aj的和最大
例如:整数序列-2, 11, -4, 13, -5, 2, -5, -3, 12, -9的最大子序列的和为21。对于这个问题,最简单也是最容易想到的那就是穷举所有子序列的方法。利用三重循环,依次求出所有子序列的和然后取最大的那个。当然算法复杂度会达到O(n^3)。
显然这种方法不是最优的,下面给出一个算法复杂度为O(n)的线性算法实现,算法的来源于Programming Pearls一书。在给出线性算法之前,先来看一个对穷举算法进行优化的算法,它的算法复杂度为O(n^2)。其实这个算法只是对对穷举算法稍微做了一些修改:其实子序列的和我们并不需要每次都重新计算一遍。
int max_sum(int a[],int size){int max=a[0];for (int i=0;i!=size;i++){int v=0;for (int j=i;j!=size;j++){v+=a[j];if(max<v)max=v;}}return max;}下面是动态规划代码,其时间复杂度为O(n):
int max_sum(int a[],int size){int max=0,temp=0;for (int i=0;i!=size;i++){temp+=a[i];if(temp>max)max=temp;else if(temp<=0) temp=0;}return max;}
可以参考::最大子序列和问题
- 最大和子序列问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题~~
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- 最大子序列和问题
- [绝对经典]Linux+Mysql+Apache+Php开发环境搭建全过程及问题的解决办法
- sql中替换空格怎么也替换不掉
- UIApplication 用法解析
- C# 画坐标,graphics,C# 坐标自定义X轴、Y轴
- 浅谈个人在瀑布流网页的实现中遇到的问题和解决方法
- 最大子序列和问题
- 使用NTP服务器完美解决VMware Linux时间无法同步问题
- Oracle/ Sequence , .sql文件的用法
- POJ 图论 基本概括
- GObject对象系统
- 一个简单的WebService实现例子,SOAP安全验证
- Qt中内存泄露和退出崩溃的问题
- ubuntu server 安装 samba
- IOS学习笔记30—两个ViewController间传值(一)