算法笔记_043:最大连续子数组和(Java)
目录
1 问题描述
给定一个整数数组,数组里可能有正数、负数和零。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。例如,如果输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},那么输出为该子数组的和18。
2 解决方案
2.1 蛮力枚举法
package com.liuzhen.array_2;
public class MaxSubArray {
public int bruteMethod(int[] A){
int maxResult = A[0];
int maxTemp = 0;;
for(int i = 0;i < A.length;i++){
for(int j = i;j < A.length;j++){
for(int k = i;k <= j;k++){
maxTemp += A[k];
}
if(maxTemp > maxResult)
maxResult = maxTemp;
maxTemp = 0; //完成一个子序列求和后,重新赋值为0
}
}
return maxResult;
}
public static void main(String[] args){
MaxSubArray test = new MaxSubArray();
int[] A = {1,-2,3,10,-4,7,2,10,-5,4};
System.out.println("使用蛮力法求解数组A的最大连续子数组和为:"+test.bruteMethod(A));
}
}
运行结果:
使用蛮力法求解数组A的最大连续子数组和为:28
2.2 动态规划法
package com.liuzhen.array_2;
public class MaxSubArray {
public int dynaticMethod(int[] A){
int maxResult = A[0];
int maxTemp = 0;
for(int i = 0;i < A.length;i++){
if(maxTemp >= 0)
maxTemp += A[i];
else
maxTemp = A[i];
if(maxTemp > maxResult)
maxResult = maxTemp;
}
return maxResult;
}
public static void main(String[] args){
MaxSubArray test = new MaxSubArray();
int[] A = {1,-2,3,10,-4,7,2,10,-5,4};
System.out.println("使用动态规划法求解数组A的最大连续子数组和为:"+test.dynaticMethod(A));
}
}
运行结果:
使用动态规划法求解数组A的最大连续子数组和为:28
算法笔记_043:最大连续子数组和(Java)的更多相关文章
- 算法笔记_133:最大连续乘积子数组(Java)
目录 1 问题描述 2 解决方案 2.1 蛮力法 2.2 动态规划法 1 问题描述 给定一个浮点数组,任意取出数组中的若干个连续的数相乘,请找出其中乘积最大的子数组. 2 解决方案 2.1 蛮力法 ...
- Demo003 最大连续子数组问题(《算法导论》4.1-5)
问题 问题描述 给定n个整数(可能为负数)组成的数组,要求一个数组连续下标和的最大值,数组的元素可正.可负.可为零. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的 ...
- php算法题---连续子数组的最大和
php算法题---连续子数组的最大和 一.总结 一句话总结: 重要:一定要本机调试过了再提交代码,因为很容易出现考虑不周的情况,或者修改了之后没有考虑修改的这部分 利用空间来换时间,或者利用空间来换算 ...
- 编程算法 - 连续子数组的最大和 代码(C)
连续子数组的最大和 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个整型数组, 数组里有正数也有负数. 数组中一个或连续的多个整数组成一 ...
- 剑指Offer(三十):连续子数组的最大和
.# 剑指Offer(三十):连续子数组的最大和 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net ...
- 剑指offer面试题31连续子数组的最大和
一.题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果 ...
- 最大连续子数组问题2-homework-02
1) 一维数组最大连续子数组 如第homework-01就是一维数组的最大子数组,而当其首位相接时,只需多考虑子数组穿过相接的那个数就行了! 2)二维数组 算法应该和第一次的相似,或者说是将二维转化为 ...
- Java课程课后作业190315之最大连续子数组(二维数组版)
,, 在本周的课堂上,老师再一次提高了要求,将一维数组升级成为了二维数组,然后求出块状的连续子数组. 一开始还想着借鉴之前球一维数组的O(n)的算法,后来还是没有找到头绪,舍友讲了自己的办法,但是没有 ...
- 个人实战演练全过程——No.1 最大连续子数组求和
之前的一次个人总结和一次单元测试入门学习是开启软件工程课程的前奏曲,也是热身,现在大家对于这门课程也有了初步的了解和认识,这次要开始真正的演奏了,要从头到尾完全靠自己的能力来解决一个问题,进行实战演练 ...
随机推荐
- 51nod1821 最优集合 贪心
首先考虑一个集合的最大优美值怎么求出 考虑新增一个数,假设我们现在的优美值已经达到了$V$,那么只需要一个$[1, V + 1]$的数就可以使$V$达到更大 为了保证能添加尽可能多的数进来,我们这么构 ...
- CodeForces - 1009E Intercity Travelling
题面在这里! 可以发现全是求和,直接拆开算贡献就好了 #include<bits/stdc++.h> #define ll long long using namespace std; c ...
- CROC 2016 - Qualification C. Hostname Aliases map
C. Hostname Aliases 题目连接: http://www.codeforces.com/contest/644/problem/C Description There are some ...
- hust 1590 - 方块游戏 数学
1590 - 方块游戏 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/problem/show/1590 D ...
- ios常用的字符串NSString自动释放理解
最近在做程序的时候,突然发现对于NSString的理解还是存在问题的.因此补充一片blog,希望对刚刚进入OC开发并搞不清楚内存泄露问题的人一点指引. 赋值: NSString * str = @&q ...
- linux查看某个端口是被哪个进程占用的
查看某个端口是被哪个进程占用的: netstat -tunpl | grep 6379
- 前端必备工具-Sublime Text 2
一个好的编辑器,能够大大地提高工作效率,editplus.notepad++都是不错的工具,体积小,启动速度快,想比之下Dreamweaver就太臃肿了,今天初使用Sublime Text 这个软件, ...
- java通过jacob来读取word转换为htm格式
转自:http://blog.csdn.net/chinapi_hzh/article/details/5798689 因为微软没有公开word源代码,所以直接用java流来读取word的后果是读出来 ...
- PHP 输出数据库中文是问号
- 在Android 5.0中使用JobScheduler
在Android 5.0中使用JobScheduler 原文链接 : using-the-jobscheduler-api-on-android-lollipop 译者 : Mr.Simple 校对者 ...