【算法导论C++代码】最大子数组
#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++代码】最大子数组的更多相关文章
- 【算法导论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 ...
- 【算法导论C++代码】归并排序
一个归并排序卡了一天最后还是归并算法有问题,最初是为了把算法导论的伪代码转到c++而加了一些东西,其中在对左右数组的赋值那里出了问题.因为进行测试时不完全,就是只用书上的数组进行测试时,归并算法部分还 ...
- 基于visual Studio2013解决算法导论之005原地随机排列数组
题目 原地随机排列数组 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> ...
- 字符串匹配之KMP算法(续)---还原next数组
相信通过今天的文章,你会对KMP的认识更加深入一层,不止停留在知道怎样计算的层面上了,废话不多说,開始. 通过前面的第一篇文章,知道了怎么求next数组,相信非常多喜欢刨根问底的人就会问,我依照你的做 ...
- 【Coding算法导论】第4章:最大子数组问题
Coding算法导论 本系列文章主要针对算法导论一书上的算法,将书中的伪代码用C++实现 代码未经过大量数据测试,如有问题,希望能在回复中指出! (一)问题描述 给定一个数组,求数组中连续的子数组的和 ...
- 在Eclipse中使用Junit进行单元测试练习 实现最大子数组和算法
1.如何在MAC OS X下安装配置java开发工具 http://www.cnblogs.com/coderL/p/5939541.html 2.最大子数组和算法 附上程序运行及测试截图,源码见后 ...
- ubuntu16.04下配置JDK 1.8+安装Java EE,并实现最大子数组算法
软工第二次作业: 1.在个人电脑中安装一个集成开发环境(Microsoft Visual Studio.Eclipse或其它工具均可),要求该环境能够提供单元自动测试功能: 2.记录安装过程,并将全部 ...
- 【LeetCode-面试算法经典-Java实现】【053-Maximum Subarray(最大子数组和)】
[053-Maximum Subarray(最大子数组和)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Find the contiguous subarray w ...
- 《算法导论》第二章demo代码实现(Java版)
<算法导论>第二章demo代码实现(Java版) 前言 表示晚上心里有些不宁静,所以就写一篇博客,来缓缓.囧 拜读<算法导论>这样的神作,当然要做一些练习啦.除了练习题与思考题 ...
随机推荐
- 利用getBoundingClientRect()来实现div容器滚动固定
ele.getBoundingClientRect()的方法是可以获得一个元素在整个视图窗口的位置 可以return的值有width,height,top,left,x,y,right,bottom ...
- ES6 module语法加载 import export
export:暴露,就是把接口暴露出去 import:引入,跟字面意思一样,引入接口 export {} export function demo(){} export var demo1; 这上面的 ...
- CentOS7.5安装截图软件
一.Screenshot tool插件 这个插件直接在https://extensions.gnome.org/搜索,然后打开ON,等待安装完毕,就可以在你桌面的顶栏的右侧看到一个相机一样的小东西 缺 ...
- python 网络爬虫框架scrapy使用说明
1 创建项目scrapy startproject tutorial 2 定义Itemimport scrapyclass DmozItem(scrapy.Item): title = scra ...
- Jsonp方式和httpclient方式有什么区别?
jsonp基于js,解决跨域问题,本质发起ajax情求但是Jsonp只支持get请求. 它不安全,它先解析js,然后发起ajax请求,然后获取到返回值,通过浏览器返回,最后解析. JQuery和Spr ...
- netbeans 开启调试
在URL中加入一个参数 XDEBUG_SESSION_START=netbeans-xdebug
- JS获取当前页面URL的方法
1.JS获取当前页面URL的方法小结 ①. document.URL; http://localhost:81/Test/1.htm/id/12 ② ...
- phpstorm如何进行文件或者文件夹重命名
1.phpstorm的重构 1.1重命名 在phpstorm中,右键点击我们要进行修改的文件,然后又一项重构,我们就可以进行对文件的重命名. 接下来点击重命名进行文件或者文件夹的重新命名. 在框中输入 ...
- 洛谷 P1352 没有上司的舞会【树形DP/邻接链表+链式前向星】
题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...
- 【SQL】ORACLE在sqlplus中使用spool方式生成建表语句
在实际生产中有时我们需要将一张表的数据导入到另外一张表,如果有PLSQL,我们可以通过PLSQL工具将数据导出为sql脚本,然后再在另外一个数据库中执行这个脚本.但有时在实际生产中我们没有PLSQL这 ...