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 ...
随机推荐
- POJ 2104:K-th Number(整体二分)
http://poj.org/problem?id=2104 题意:给出n个数和m个询问求区间第K小. 思路:以前用主席树做过,这次学整体二分来做.整体二分在yr大佬的指点下,终于大概懂了点了.对于二 ...
- js中的错误检测
<!DOCTYPE html> <html> <body> <script> function myFunction() { try { var x=d ...
- inux按照CPU、内存、磁盘IO、网络性能监测
http://my.oschina.net/chape/blog/159640 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长 ...
- android相关内容
一: 前台进程: 前台的进程的优先级最高, 可见进程: android系统一般存在少量的可见进程. 服务进程: 没有用户界面, 后台进程: 一般存在较多的后台进程. 空进程: 不包括任何活跃组件的进程 ...
- Python学习笔记——进阶篇【第八周】———进程、线程、协程篇(Socket编程进阶&多线程、多进程)
本节内容: 异常处理 Socket语法及相关 SocketServer实现多并发 进程.线程介绍 threading实例 线程锁.GIL.Event.信号量 生产者消费者模型 红绿灯.吃包子实例 mu ...
- tomcat服务配置及搭建
一.在官网上下载tomcat 下载地址:http://tomcat.apache.org/download-60.cgi 下载完后解压 二.设置环境变量 1,JAVA_HOME 2.CATALINA_ ...
- 5.Struts2的OGNL表达式
1.创建javaweb项目Struts2_Part4_OGNL并在WebRoot下的WEB-INF下的lib文件夹下添加如下jar文件 commons.jar commons.jar freemark ...
- Opencv2.2版本以上CvvImage类的使用
Opencv 2.2以上的版本不再包含CvvImage类,可有时我们在MFC中显示图片仍然需要CvvImage类,特别进行图像的拷贝.显示等操作的时候. 早期版本的CvvImage.h添加进工程也是可 ...
- Dojo的UI框架bootstrap for dojo和Dojo-Bootstrap简介
最近在学习Dojo,但样式问题真是头疼呀,虽然清新的淡蓝色很是减缓眼睛的疲劳,但这个扁平化简约风盛行的年代,光是清新的拟物已经满足不了群众的需求了,所以就在这样的需求下,我知道了bootstrap f ...
- PQ分区魔术师v9.0 中文版
软件名称: pqmagic 硬盘分区大师9.0中文绿色版 软件大小:5.80MB 软件语言:简体中文 软件类别:磁盘工具 软件授权:免费软件 更新时间:2013-10-082013-10-08 09: ...