最大子数组求解
发表于|更新于|算法导论
在做股票投资时,当买进最低,抛出最高时,获取的盈利是最大的,分别求出当天相对于前天的差价,数学上讲,将差价定义为一个数组,求其一阶差分,求一个数组下标,使得其和最大。

为了解决这一问题,可以采用分治法解决,对于数组A,开始、中间和结束坐标索引为low,mid,hight,最大的子数组只可能存在[low,mid],[mid+1,hight]和跨越中点的最大子数组,
函数FIND-MAX-CORSSING-SUBARRAY接受数组A及线标low,mid,high为输入,返回一个下标元祖划定跨越中点的最大子数组的边界,并返回最大子数组

分析可以知道,其复杂度为N,进而可以通过分治算法求得最终解如下所示:

相关推荐

5月 14 2026
直线拟合之最小二乘法AX+BY+C=0
最小二乘法拟合直线,对于大多数人都不是很陌生,直线方程 y=kx+b,令sum((y-kx-b)^2),分别对k和b求导便可求出最佳的参数,但是如果遇到诸如“X=5”这样的直线方程,又该如何呢?这时候就不再适用了,参考这个方法,这样拟合出来的才是直线的一般方程。 Let the line sought be Ax + By + C = 0, with no restriction on A, B,and C, except not both of A and B are zero. Then the distance from apoint (x[n],y[n]) to this line is given by d[n] = |A*x[n]+B*y[n]+C|/sqrt(A^2+B^2). Then the sum of the squares of the distances of the r points from theline is F(A,B,C) = SUM d[n]^2 = SUM (A*x[n]+B*y[n]+C)^2/(A^2+B^2). H...

5月 4 2014
灰度共生矩阵(GLCM)
共生矩阵用两个位置的象素的联合概率密度来定义,它不仅反映亮度的分布特性,也反映具有同样亮度或接近亮度的象素之间的位置分布特性,是有关图象亮度变化的二阶统计特征。它是定义一组纹理特征的基础。 一幅图象的灰度共生矩阵能反映出图象灰度关于方向、相邻间隔、变化幅度的综合信息,它是分析图象的局部模式和它们排列规则的基础。 设f(x,y)为一幅二维数字图象,其大小为M×N,灰度级别为Ng,则满足一定空间关系的灰度共生矩阵为 P(i,j)=#{(x1,y1),(x2,y2)∈M×N|f(x1,y1)=i,f(x2,y2)=j} 其中#(x)表示集合x中的元素个数,显然P为Ng×Ng的矩阵,若(x1,y1)与(x2,y2)间距离为d,两者与坐标横轴的夹角为θ,则可以得到各种间距及角度的灰度共生矩阵P(i,j,d,θ)。 纹理特征提取的一种有效方法是以灰度级的空间相关矩阵即共生矩阵为基础的[7],因为图像中相距(Δx,Δy)的两个灰度像素同时出现的联合频率分布可以用灰度共生矩阵来表示。若将图像的灰度级定为N级,那么共生矩阵为N×N矩阵,可表示为M(Δx,Δy)(h,k),其中位于(h,k)的元素m...

5月 20 2014
图像对比度增强之-imadjust
图像增强,对比度拉伸时常用的一个函数,在matlab中,也有对应的函数,既imadjust,但是在实际应用中,效果并不是很理想,在下文的讨论中,就涉及到如何自动确定高低阈值,当然了这里只是针对简单的场景。如下图所示,有整体偏亮及偏暗的图 图例1######图例2### 对于这种二值划分的图像,采用图像分割的方法,分别确定两个区域的平均灰度,作为imadjust的阈值,可以达到较好的效果。如下图所示 ###图例1-Matlab默认值输出######图例1-自动确定阈值输出######图例2-Matlab默认值输出######图例2-自动确定阈值输出### 从上面的图例中不难看出,自动确认的阈值在对比度提升上更加明显,对比度更大

5月 4 2014
使用MATLAB进行USB摄像头的编程
1、查询USB2.0Camera 的具体参数(imaqhwinfo) 2、创建视频输入对象(videoinput) 3、图像预览和显示(preview、stoppreview、closepreview和image) 4、获取视频图像(getsnapshot) 5、图像获取设备的获取和设置(get和set) 6、关闭视频对象(delete) 在正式讲解之前,我想说明下几个个在图像获取工具箱中的术语: 图像获取设备:比如摄像头、扫描仪 图像获取适配器:主要的目的是通过驱动在Matlab和图像获取设备之间传递信息 ROI:region-of-interest 感兴趣区域 在说说几个常用的函数,我们这里只是说明它的作用,具体如何使用参考帮助系统 getselectedsource imaqfind isvalid peekdata getdata imaqmontage 给我们一个摄像头我们必须知道他的相关参数,才可能进行我们的编程下。当然我们可以查询商家手册,但是那个累不累人呀。 Matlab的图像获取工具箱为我提供了imaqhwinfo(),来获取PC上以安装的图像获取硬件信息 没...

5月 4 2014
p分位法图像二值化
最近在做字符识别,由于对于粘连情况识别无效 ,所以一直在考虑一种能够解决字符粘连的方法,而最为关键的是二值化过程,这种方法不能很好的分割字符,但是也是一种思路,写下来以备以后不时之需。代码很少, clc;clear;close all ga=imread('1.bmp'); if ndims(ga)==3 ga=rgb2gray(ga); end prc=prctile(ga,40); bw=ones(size(ga)); for i=1:length(prc) bw(find(ga(:,i)<=prc(i)),i)=0; end imshow(bw,[]) 具体函数定义大家可以查看matlab帮助文件,有详细用法。

5月 14 2026
矩阵的旋转平移正变换及反变换
假设一个点P(x,y,z),旋转矩阵T,平移向量V,则旋转后的平移表达式为T*P+V,此处采用右乘准则,用矩阵表示为: [T V;0 1]*[T0 V0;0 1]=[T*T0 T*V0+V;0 1] 其中T0为P原始坐标系的旋转矩阵,V0是P原始坐标系的评议向量,则相应的逆变换为 [inv(T) - inv(T)*V ; 0 1]*[T0 V0;0 1]=[inv(T)*T0 inv(T)*V0-inv(T)*V;0 1] 从上式可以看出,正变换在先旋转后平移的情况下,其逆变换是先平移后旋转
评论

