问题:一个有N个整数元素的一维数组,那么求子数组和的最大值。

分析:首先我们明确问题,子数组是联系的,不用返回元素的位置,元素是整数,可能为正,负或0。我们来看看最经典的解法:a[0],a[1]…a[N-1],用分治的思想,a[0]和a[1]…a[N-1],是什么关系呢?a[1]…a[N-1],包含两部分,1,以a[1]为开头的最大值,2,a[1]…a[N-1],有一个最大值,那么我们只要比较{a[0],a[0]+以a[1]开头的最大值,a[1]…a[N-1]之间的最大值}就可以得出结果,那么a[1]与a[2]…a[N-1]呢?也一样……a[N-2]与a[N-1]呢?代码如下:

 

void FindBigSubArray_FenZhi(int* arr, int size)
{int nStart = arr[size - 1];//以arr[size - 1]开头的最大值int nAll   = arr[size - 1];//arr[size - 1]到arr[N-1]之间的最大值for (int i = size - 2; i >= 0; i--){nStart = max1(arr[i], arr[i] + nStart);//比较arr[i]与arr[i]为开头的最大值,nStart确保永远是以arr[i]为开头的最大值跟arr[i]的比较nAll   = max1(nStart, nAll);//得到arr[i]之后的一段数组的最大值}cout<<"max="<<nAll<<endl;
}

转载于:https://www.cnblogs.com/cluster/archive/2011/06/12/2078737.html

Programe_Of_Beauty:2.14 求数组的子数组之和的最大值相关推荐

  1. 编程之美 2.14求数组的子数组之和的最大值

    对于一个有N个元素的数组,a[0]~a[n-1],求子数组最大值. 如:数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6. ...

  2. 编程之美2.14 求数组的子数组之和的最大值

          这是一个在面试中出现概率很高的一道题目,就拿我来说吧,面试了5家公司中,两家公司问了这道题目,可见,这道题目是非常经典的.       解题思想也不是很难,我熟悉的有:两种解题办法:   ...

  3. 求数组的子数组之和的最大值

    一个有N个整数元素的一维数组( A[0], A[1], ... , A[n-2], A[n-1]),子数组之和的最大值是什么?(要求子数组的元素是连续的) 例子:有数组( -2, 5, 3, -6, ...

  4. 算法-求数组的子数组之和的最大值

    一个一维int数组,这个数组有很多子数组,那么子数组之和的最大值是什么呢? 思考 1.题目说的子数组是连续的: 2.题目只需要求和,并不需要返回子数组的具体位置: 3.数组的元素是整数,所以数组可能包 ...

  5. 求数组的子数组之和的最大值IV

    在之前的基础上又安排了二维数组的,在课上一开始是理解错要求了,简单的以为用循环数组就能解决,但是却忽视了子数组是否能构成矩形,之后课下和同学们讨论,主要是多重遍历,但是我还是没搞明白怎么构成新的二维数 ...

  6. 编程之美-求数组的子数组之和的最大值方法整理

    [试题描述] 方法一: 上面这个算法的时间复杂度为O(n^3),改进后如下: 此时算法的时间复杂度为O(n^2) 方法二:时间复杂度O(nlogn) 方法三:时间复杂度O(n) 改进一下,可以得到空间 ...

  7. 编程之美-2.14-求数组的子数组之和的最大值

    这个以前写过,见求数组的最长子数组之和的最大值 这里说一下后面扩展题目. 1. 简述 1) 如果数组首尾相连,即允许找到一组数字(A[i],···,A[n-1], A[0],···, A[j]),请使 ...

  8. 【C】课堂结对联系-求整数数组的子数组之和的最大值(党云龙、黄为)

    测试题目 求整数数组的子数组之和的最大值. 题目分析 首先是明确题目的目的:求最大值:其次是考虑子数组求和.这里将求最大值写成一个单独的函数.主函数未测试函数.这里用到了二重循环,时间复杂度为N^2. ...

  9. 《团队开发一(求一个数组的连续的子数组之和的最大值)》

    <团队开发一(求一个数组的连续的子数组之和的最大值)> (1)设计思想:一般的,求一个数组的最大子数组之和即是按数组顺序依次让前几个数的和与下一个数进行比较,设一变量来装每次比较后的较大的 ...

最新文章

  1. JCIM | 用于自动生成类药分子的生成网络复合体(GNC)
  2. linux操作系统上课,Linux操作系统使用的文件系统是
  3. JavaWeb图书管理系统day02
  4. 泛型集合中对继承类的转换
  5. C#(.Net)中调用Sql sever汉字字符串显示为?问号
  6. 1075 链表元素分类 (25 分)
  7. 【Tensorflow】 Object_detection之训练PASCAL VOC数据集
  8. 前端学习(2669): vue3.0实战开始建立新项目
  9. 测试网络的带宽指令_单机千万级MQTT服务器测试报告
  10. java读取excel数据的方法是_java怎么读取excel文件里的数据
  11. python获取字典长度_Python基础-字典
  12. 优缺点 快速扫描 硬盘监测_机械硬盘坏道如何检测与修复?看完这篇你就知道了...
  13. BirtViewer和Struts2框架的整合
  14. 第四章(数组) 编程题 1
  15. 高中数学知识点总结归纳之立体几何
  16. 2021EC-final博弈论E题Prof. Pang and Poker
  17. raid5磁盘阵列原理以及实现
  18. python对图像镜像旋转操作
  19. html5 sha1,JavaScript SHA-256加密算法详细代码
  20. eSpeak与ekho交叉编译

热门文章

  1. 信息安全工程师笔记-案例分析(三)
  2. 计算机图形学Web前端笔记-图形平移放缩原理及实现(two.js鼠标事件适用所有渲染)
  3. Spring Boot通过@RequestParam接收前端表单传来的数据
  4. linux比较小数大小,带有小数点的数值对比大小
  5. php mysql 持久连接_PHP MySQL连接持久性
  6. oracle多线程删除,请教高手:多线程访问时如何实现删除一个文件?
  7. python深拷贝实现原理_从底层剖析Python深浅拷贝
  8. abstract类中不可以有private的成员_C++ 类:声明成员函数与实现
  9. flashpaper打印机没有被正确安装_条码打印机有哪些常见问题
  10. 一个优秀的软件测试工程师需具备的技能