最大子数组问题,股票价格示例:
1.在最高价格开始向左寻找之前的最低价格
2.在最低价格开始向右寻找之后的最高价格
3.暴力求解法,尝试每队可能的买进和卖出组合,保证卖出在买进之后
key
buy
sell
for i=0;i<n;i++
for j=i+1;j<n;j++
p=key=arr[j]-arr[i]
if !key key=p
if key<p buy=i sell=j 问题变化:数组A中元素连续相加最大的子数组,只有当元素有负数时才有意义
分治策略的求解思路:
1.找到数组中的中央位置mid,A[low..mid],A[mid+1..high]
2.A[low,high] 完全位于子数组A[low..mid] low<=i<=j<=mid
3.完全位于A[mid+1..high] mid<i<=j<=hign
4.跨越中点 low<=i<=mid<j<=hign
5.找出左半部分最大和(从中间到左找),找出右半部分最大和(从中间向右找)
leftSum left
for i=mid;i>=low;i--
sum=sum+A[i]
if sum>leftSum
leftSum=sum
left=i
rightSum right
for j=mid+1;j<=high;j++
sum+=A[j]
if sum > rightSum
rightSum=sum
right=i
6.递归调用
mid=(low+high)/2
find(A,low,mid)
find(A,mid+1,high)
findCross(A,low,mid,high)

  

[PHP]算法-最大子数组问题思路的更多相关文章

  1. 求一个数组的最大子数组(C/C++实现)

    最大子数组:要求相连,加起来的和最大的子数组就是一个数组的最大子数组.编译环境:VS2012,顺便说句其实我是C#程序员,我只是喜欢学C++. 其实这是个半成品,还有些BUG在里面,不过总体的思路是这 ...

  2. [leetcode]53. Maximum Subarray最大子数组和

    Given an integer array nums, find the contiguous subarray (containing at least one number) which has ...

  3. 【LeetCode-面试算法经典-Java实现】【053-Maximum Subarray(最大子数组和)】

    [053-Maximum Subarray(最大子数组和)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Find the contiguous subarray w ...

  4. 【Coding算法导论】第4章:最大子数组问题

    Coding算法导论 本系列文章主要针对算法导论一书上的算法,将书中的伪代码用C++实现 代码未经过大量数据测试,如有问题,希望能在回复中指出! (一)问题描述 给定一个数组,求数组中连续的子数组的和 ...

  5. 在Eclipse中使用Junit进行单元测试练习 实现最大子数组和算法

    1.如何在MAC OS X下安装配置java开发工具 http://www.cnblogs.com/coderL/p/5939541.html 2.最大子数组和算法 附上程序运行及测试截图,源码见后 ...

  6. ubuntu16.04下配置JDK 1.8+安装Java EE,并实现最大子数组算法

    软工第二次作业: 1.在个人电脑中安装一个集成开发环境(Microsoft Visual Studio.Eclipse或其它工具均可),要求该环境能够提供单元自动测试功能: 2.记录安装过程,并将全部 ...

  7. 力扣算法JS LC 59-螺旋矩阵2,LC 152-乘积最大子数组

    LC 59-螺旋矩阵2 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix . 示例 1: 输入:n = 3输出:[[1,2 ...

  8. 【算法导论C++代码】最大子数组

    #define Inf 65535 #include <iostream> using namespace std; void FindMaxCrossingSubarray(int *A ...

  9. homework-01 "最大子数组之和"的问题求解过程

    写在前面:我的算法能力很弱,并且也是第一次写博文,总之希望自己能在这次的课程中学到很多贴近实践的东西吧. 1.这次的程序是python写的,这也算是我第一次正正经经地拿python来写东西,结果上来说 ...

随机推荐

  1. 第39章:MongoDB-集群--Replica Sets(副本集)---副本集基本原理

    ①操作日志oplog Oplog是主节点的local数据库中的一个固定集合,按顺序记录了主节点的每一次写操作,MongoDB的复制功能是使用oplog来实现的,备份节点通过查询这个集合就可以知道需要进 ...

  2. IPC,Hz(Hertz) and Clock Speed

    How do we measure a CPU's work? Whether it's fast or not depends on three factors: IPC, Hz, Clock sp ...

  3. Android-broadcast静态动态广播

    广播的静态和动态类型 静态广播: 1.继承之broadcastreceiver public class MyStaticBroadcastReceiver extends BroadcastRece ...

  4. Alpha冲刺-(9/10)

    Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 进一步优化代码,结合自己负责的部分修 ...

  5. docker安装redis 指定配置文件且设置了密码

    ---------首先,所有docker的命令,都可以用 docker help 来查询,这个挺好的,我反正记不住辣么多命令呀.   1.直接pull 官方镜像吧.没啥说的,这样方便省事.如果你非要用 ...

  6. CSS---伪类选择器

    伪类选择器的作用: 控制标签在不同状态下的样式. 标签的四种状态: link:没有访问过的状态: hover:鼠标经过的状态: active:鼠标激活(按下但没有松开)的状态: visited:已经被 ...

  7. java 项目的路径详情

    title: 项目下的路径问题tags:grammar_cjkRuby: true--- 在javaee的项目中,存取文件,解析xml和properties文件,以及项目中的文件,都需要获取路径,常用 ...

  8. 如果你要查看文件的每个部分是谁修改的, 那么 git blame 就是不二选择

    原文: http://gitbook.liuhui998.com/5_5.html 如果你要查看文件的每个部分是谁修改的, 那么 git blame 就是不二选择. 只要运行'git blame [f ...

  9. Java学习笔记46(多线程三:线程之间的通信)

    多个线程在处理同一个资源,但是线程的任务却不相同,通过一定的手段使各个线程能有效地利用资源, 这种手段即:等待唤醒机制,又称作线程之间的通信 涉及到的方法:wait(),notify() 示例: 两个 ...

  10. kaili Linux学习推荐网站

    kaili学习推荐网站 kail中文网:http://www.kali.org.cn/forum.php?gid=67 Kali官方教材:https://kali.training/ Kali Lin ...