go语言实现寻找最大子数组
题目:给定一个数字序列,寻找其中各元素相加和最大的子数组
/*
寻找最大子数组go语言实现
*/ package main import fmt "fmt" func main() {
/*
需要查找的数组
*/
A:=[]int{-,,-,-,,,}
low:=
high:=len(A)-
sum:=
low,high,sum=find_max_array(A,,len(A)-)
/*
返回数组边界
*/
fmt.Println(low," ",high," ",sum)
}
/*
返回越过中间点的最大数组
*/
func Find_max_acrossing(Array []int,low int,mid int,high int)(int,int,int) {
/*
现设定左最小值,寻找左边最小数组边界
*/
left_sum:=-
sum:=
max_left:=mid
for i := mid; i>=low; i-- {
sum+=Array[i]
if sum>left_sum {
left_sum=sum
max_left=i
}
} /*
现设定右最小值,寻找右边最小数组边界
*/
right_sum:=-
sum=
max_right:=mid+
for i := mid+; i <=high; i++ {
sum+=Array[i]
if sum>right_sum {
right_sum=sum
max_right=i
}
}
return max_left,max_right,left_sum+right_sum
} func find_max_array(Array []int,low int,high int)(int,int,int){
max_left:=low
max_right:=high
sum:=
if low==high {
max_left=low
max_right=high
sum=Array[high]
}else{
mid:=
if (high-low+)%== {
mid=(high+low-)/
}else{
mid=(high+low)/
} max_left_low:=low
max_left_high:=mid
left_sum:=
max_left_low,max_left_high,left_sum=find_max_array(Array,low,mid) max_right_low:=mid+
max_right_high:=high
right_sum:=
max_right_low,max_right_high,right_sum=find_max_array(Array,mid+,high) max_across_low:=low
max_across_high:=high
across_sum:=
max_across_low,max_across_high,across_sum=Find_max_acrossing(Array,low,mid,high) if left_sum>right_sum && left_sum>across_sum{
max_left=max_left_low
max_right=max_left_high
sum=left_sum
}else if right_sum>left_sum && right_sum>across_sum {
max_left=max_right_low
max_right=max_right_high
sum=right_sum
}else if across_sum>left_sum && across_sum>right_sum {
max_left=max_across_low
max_right=max_across_high
sum=across_sum
}
}
return max_left,max_right,sum
}
go语言实现寻找最大子数组的更多相关文章
- Java 数组中寻找最大子数组
程序设计思想: 依次将数组划分开,先判断一个元素的单个数组大小,接下来两个,依次上升,最后将所得结果进行比较赋值,输出最大结果. 1 package ketangTest; //张生辉,康治家 201 ...
- homework-01 "最大子数组之和"的问题求解过程
写在前面:我的算法能力很弱,并且也是第一次写博文,总之希望自己能在这次的课程中学到很多贴近实践的东西吧. 1.这次的程序是python写的,这也算是我第一次正正经经地拿python来写东西,结果上来说 ...
- 动态规划法(八)最大子数组问题(maximum subarray problem)
问题简介 本文将介绍计算机算法中的经典问题--最大子数组问题(maximum subarray problem).所谓的最大子数组问题,指的是:给定一个数组A,寻找A的和最大的非空连续子数组.比如 ...
- CLRS最大子数组问题
今天我们一起来看一下关于最大子数组的一些问题.最大子数组的应用场景可以是这样的:有一天,你搞了一场投资开始炒股,这时你就会想,我怎样才能获得最大的利润呢,最简单的想法就是我在股票的最低价时买入,然后在 ...
- 对"一维最大子数组和"问题的思考(homework-01)
一维最大子数组和问题,即给定一个数组,在它所有的连续子数组的和中,求最大的那个和.“最大子数组和”是一个很好的IT面试考题,在<编程之美>一书中同时阐述了一维数组和二维数组的讨论.本篇博客 ...
- 对"一维最大子数组和"问题的思考
对"一维最大子数组和"问题的思考(homework-01) 一维最大子数组和问题,即给定一个数组,在它所有的连续子数组的和中,求最大的那个和.“最大子数组和”是一个很好的IT面试考 ...
- 4月25日课上练习 一维数组最大子数组(debug版)
一维数组中求最大子数组的算法 package com.wangwang.mar; import java.util.Scanner; public class Sum { public static ...
- Java课程课后作业190309之连续最大子数组
老师在课堂是提出了这个问题,并且提出了时间复杂度是O(n)的要求,一开始我自己思想简单,在逻辑上出现了十分粗心的错误,后来同学们也在课堂上比较激烈地讨论了一番,也只是将时间复杂度降到了O(n*n),在 ...
- [PHP]算法-最大子数组问题思路
最大子数组问题,股票价格示例: 1.在最高价格开始向左寻找之前的最低价格 2.在最低价格开始向右寻找之后的最高价格 3.暴力求解法,尝试每队可能的买进和卖出组合,保证卖出在买进之后 key buy s ...
随机推荐
- PIE 阻断回溯——Cut
PIE(Prolog Inference Engine)通常是搜索所有的解.举个例子, 当然dialog窗口中一开始调用 run. 只会显示一个解(虽然事实上会得到两个解),在前面加上 X=1,就可以 ...
- Ubuntu 12.04 修改键盘映射
背景: (1) 我的笔记本G450上,Page_up/Page_down键分别和Home/End在同一个键位上,需要同时按住Fn键才能敲出Home/End (2) 习惯用Vim的同志都有这个感觉,Es ...
- Hihocode 1015 KMP算法
时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. ...
- CentOs + Nginx + php-fpm + MySql 依赖库安装
依赖库和开发工具 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype free ...
- S.O.L.I.D五大原则之单一职责SRP
转自 : 汤姆大叔的blog Bob大叔提出并发扬了S.O.L.I.D五大原则,用来更好地进行面向对象编程,五大原则分别是: The Single Responsibility Principle(单 ...
- IO流数据读写总结
1.用java自带的IO读写方法 官方API网站:http://docs.oracle.com/javase/7/docs/api/ 2.Apache的Commons-io-2.4.jar中的方法,参 ...
- 万恶的tileMap
先吐槽下.. 本来,我们准备用tileMap来做地图的,但发现一个问题,就是tileMap层中不能添加cc.Sprite,这导致了tileMap只适合做2D平面没有遮挡的游戏,并且主角是不能有效率的进 ...
- SEO定义目的,优化的好处
SEO:search engine optimization(搜索引擎优化) SEO严谨的定义:SEO是指在了解搜索引擎自然排名机制的基础上,对网站进行内部及外部的调整优化,改进网站在搜索引擎中关键字 ...
- javascript初始笔记
1.在html中使用点击事件: <button type="button" onclick="myclick()">click me<butt ...
- ajaxUploadFile在IE9等IE浏览器,上传变json下载的问题解决(SpringMVC + ajaxUploadFile)
使用ajaxUploadFIle进行文件上传,在google中正常,但是IE中却变成了json文件下载.经过搜索和尝试,解决方案如下: 首先明确,该功能使用$.ajaxFileUpload而非ajax ...