#define Inf 65535
#include <iostream>
using namespace std;
void FindMaxCrossingSubarray(int *Array, int low, int mid, int high,
int &maxLeft,int &maxRight, int &sum); void FindMaxmumSubarry(int *Array,int low,int high,
int &relow,int &rehigh,int &resum); void main()
{
int Array[]={,-,-,,-,-,
-,,,-,,-,-,,-,};
cout<<"分治策略,求最大子数组"<<endl;
int low,high,sum;
FindMaxmumSubarry(Array,,,low,high,sum);
cout<<"买入天数"<<low<<"卖出天数"<<high<<"总盈利"<<sum<<endl;
system("pause"); } void FindMaxCrossingSubarray(int *Array, int low, int mid, int high,
int &maxLeft,int &maxRight, int &sum)
{
int leftSum = -Inf;
sum=;
for(int i=mid;i>low;i--)
{
sum=sum+Array[i];
if(sum>leftSum)
{
leftSum=sum;
maxLeft=i;
}
} int rightSum = -Inf;
sum=;
for(int j=mid+;j<high;j++)
{
sum=sum+Array[j];
if(sum>rightSum)
{
rightSum=sum;
maxRight=j;
}
} sum=leftSum+rightSum;
}
void FindMaxmumSubarry(int *Array,int low,int high,
int &relow,int &rehigh,int &resum)
{
if (high==low)
{
relow=low;
high=rehigh;
resum=Array[low];
}
else
{
int mid=(low+high)/;
int leftLow,leftHigh,leftSum,
rightLow,rightHigh,rightSum,
crossLow,crossHigh,crossSum;
FindMaxmumSubarry(Array,low,mid,leftLow,leftHigh,leftSum);
FindMaxmumSubarry(Array,mid+,high,rightLow,rightHigh,rightSum);
FindMaxCrossingSubarray(Array,low,mid,high,crossLow,crossHigh,crossSum); if (leftSum>=rightSum&&leftSum>=crossSum)
{
relow=leftLow;
rehigh=leftHigh;
resum=leftSum;
}
else if(rightSum>=leftSum&&rightSum>=crossSum)
{
relow=rightLow;
rehigh=rightHigh;
resum=rightSum;
}
else
{
relow=crossLow;
rehigh=crossHigh;
resum=crossSum;
}
}
}

【算法导论C++代码】最大子数组的更多相关文章

  1. 【算法导论C++代码】Strassen算法

    简单方阵矩乘法 SQUARE-MATRIX-MULTIPLY(A,B) n = A.rows let C be a new n*n natrix to n to n cij = to n cij=ci ...

  2. 【算法导论C++代码】归并排序

    一个归并排序卡了一天最后还是归并算法有问题,最初是为了把算法导论的伪代码转到c++而加了一些东西,其中在对左右数组的赋值那里出了问题.因为进行测试时不完全,就是只用书上的数组进行测试时,归并算法部分还 ...

  3. 基于visual Studio2013解决算法导论之005原地随机排列数组

     题目 原地随机排列数组 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> ...

  4. 字符串匹配之KMP算法(续)---还原next数组

    相信通过今天的文章,你会对KMP的认识更加深入一层,不止停留在知道怎样计算的层面上了,废话不多说,開始. 通过前面的第一篇文章,知道了怎么求next数组,相信非常多喜欢刨根问底的人就会问,我依照你的做 ...

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

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

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

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

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

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

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

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

  9. 《算法导论》第二章demo代码实现(Java版)

    <算法导论>第二章demo代码实现(Java版) 前言 表示晚上心里有些不宁静,所以就写一篇博客,来缓缓.囧 拜读<算法导论>这样的神作,当然要做一些练习啦.除了练习题与思考题 ...

随机推荐

  1. FS Shell命令

    HDFS命令基本格式 hadoop fs -cmd args hdfs dfs -cmd args cat hadoop fs -cat URI [URI .....] 将路径指定文件的内容输出到st ...

  2. Qt笔记——QSqlLite

    静态数据库,简单方便 在.pro文件里添加 +sql #ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { ...

  3. Eolinker——前置用例的使用

    如下补充均是Eolinker的文档中未说明的部分 1.在Eolinker的API自动化测试中,点击“前置用例”,“添加前置用例” 2.给添加的接口命名完之后,点击名称进入到编辑页面,代码输入框的内容为 ...

  4. Android Studio2.3相关文章

    安卓之旅第一站--第一次Android Studio2.3搭建过程总结 http://blog.csdn.net/iam549032340/article/details/56838907 Andro ...

  5. 2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17) 日常训练

    A - Archery Tournament 题目大意:按时间顺序出现靶子和射击一个位置,靶子的圆心为(x, y)半径为r,即圆与x轴相切,靶子不会重叠,靶子被击中后消失, 每次射击找出哪个靶子被射中 ...

  6. VS2015运行 cordova 时候提示无法运行解决

    出现此问题的原因是在于npm程序损坏了.vs调用的npm程序并不是在node安装目录下的npm,而是在: C:\Users\用户名\AppData\Roaming\Microsoft\VisualSt ...

  7. Comet OJ CCPC-Wannafly Winter Camp Day1 (Div2, online mirror) F.爬爬爬山-最短路(Dijkstra)(两个板子)+思维(mdzz...) zhixincode

    爬爬爬山 已经提交 已经通过 9.83% Total Submission:417 Total Accepted:41 题目描述 爬山是wlswls最喜欢的活动之一. 在一个神奇的世界里,一共有nn座 ...

  8. Mysql Sql Explain

    1.使用mysql explain的原因 在我们php程序员的日常写代码中,有时候会发现我们写的sql语句运行的特别慢,导致响应时间特别长,这种情况在高并发的情况下,我们的网站会直接崩溃,为什么双十一 ...

  9. HTML的介绍

    什么是HTML? HTML:Hyper Text Markup Language :超文本标记语言. 超文本:功能比普通文本更加强大 标记语言:使用一组标签对内容进行描述的语言,它不是编程语言 htm ...

  10. 制作启动U盘

    概述 将普通的u盘制作成启动u盘,用于引导安装操作系统. 材料: 普通U盘 需要有足够的存储空间,里面的内容请提前备份. 操作系统iso文件 PowerISO 商业软件,有试用期:用来制作启动u盘 正 ...