整数数组中子数组的最大值

1.设计思路

设置一个子数组的和temp,和一个最大值max两个变量,依次遍历数组中的数从下表为0开始,将子数组和赋值到temp中,最大值先设为数组中第一个数;

max={temp,max},如果temp<0,将temp=0;temp加一个负数会小于本身,加一个正数大于本身。最后得出的max为最大值。

2.程序代码

package 整数数组中的最大值;
import java.util.*;
public class ArrayMax {
    public static void main(String args[])
    {
        int number[]=new int[5];
        @SuppressWarnings("resource")
        Scanner scanner=new Scanner(System.in);
        int n;
        System.out.println("请输入你要输入的个数:");
        n=scanner.nextInt();
        System.out.println("请输入要输入的数:");
        for(int i=0;i<n;i++)
        {
            number[i]=scanner.nextInt();
        }
        int max=number[0];
        int temp=number[0];
        for(int i=1;i<5;i++)
        {
            if(temp<0)
            {
                temp=0;
            }
            temp+=number[i];
            if(temp>max)
            {
                max=temp;
            }
        }
        System.out.println("子数组最大值为:"+max+"。");
    }

}

3。运行结果

.

时间: 2024-10-13 12:37:06

整数数组中子数组的最大值的相关文章

整数数组中子数组的最大值2

设计思路 (1)     首先设置要输入的数字个数和输入的数字: (2)     求数组number[]中子数组的最大值,运用到数组的动态规划,会运用到两个变量进行比较,一个为子数组的和,另一个为子数组和的最大值:maxnum=max{temp,maxnum}:temp和maxnum初始化为第一个数的值: (3)     依次检索每个数的值,每次将值与下一个数的值相加并将值赋值给变量temp:如果temp<0:temp再加上下一个数,temp会更小,此时将temp=0,便于不影响下一个子数组的和

求二维数组中子数组和中最大的值,及子数组

求二维数组中子数组和中最大的值,及子数组 个人信息:就读于燕大本科软件工程专业 目前大三; 本人博客:google搜索"cqs_2012"即可; 个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献; 编程语言:C++ ; 编程坏境:Windows 7 专业版 x64; 编程工具:vs2008; 制图工具:office 2010 powerpoint; 硬件信息:7G-3 笔记本; 真言 每次着急写程序,碰到问题就头疼,头疼之后便是满满的收获,付出总有回报. 题目 求

课堂3—结队开发(求数组中子数组和的最大值)

结队开发:林彦汝.张金 题目:返回一个整数数组中最大数组的和. 要求: 1.输入一个整型数组,数组里有正数也有负数: 2.数组中连接的一个或多个整数组成一个子数组,每个子数组都有一个和: 3.求素有子数组的和的最大值. 本节课是学习结队开发,故先分配了任务:我主要负责程序分析,代码编程:张金负责代码复审,代码测试计划. 思路:我和搭档张金一起分析题目,统一解决方法.首先定义2个数组(假设有n个数),关系如下: max[0]为{arr[0].arr[0]+arr[1].....arr[0]+arr

数组中子数组之和最大值(首尾相接)

题目:求一维子数组的最大子数组之和(一维数组首尾相接)并写出子数组 人员: 陈晨:程序复查,结果测试. 王颖瑞:编写代码 思路: 1.求最大子数组之和:对于首尾相接的数组来说,如果计算子数组之和,最多把数组循环两遍,所以我们把数组的长度扩大了一倍(如果要算的数组是5位,那么数组就定义为10位,前半部分和后半部分一样),之后把这个数组进行分组(以要算的数组为5为例).第一个数到第五个数为一组,第二个数与第六个数为一组...第五个数到第九个数.分别把各组的子数组的最大值记录到另一个数组中.比较求出最

[程序员代码面试指南]数组和矩阵问题-数组中子数组的最大累乘积

问题描述 给定数组,输出所有子数组的累积的最大值. 题解 以arr[i]结尾的最大累乘积=max{maxarr[i],minarr[i],arr[i]},其中max.mini表示以arr[i-1]结尾的最大累乘积.最小累乘积. 最后再取一个最大值即可. 时间复杂度O(n) 代码 public class Main { public static void main(String args[]) { int[] arr= {-2,4,0,3,5,8,-1}; int maxProduct=getM

返回一个整数数组中子数组的最大值

要求: 输入整数数组,子数组求和,求子数组的最大值,时间复杂度为0, 设计思想: 随机生成N个整数,规定子数组的个数最大值为3的随机值,先生成一个数n1,在用for循环将前n个数向加赋值给sun[i],再生成一个随机数n2,,将n1到n2 之间的数相加赋值给sun[j++],依次循环,如果n1+n2+······大于N那将最后的和在赋值给sun[j],然后判断sun[]中的最大值,最后输出 public class Test { /** * @param args */ final static

练习数值计算。找出一个整数数组中子数组之和的最大值。

方法类: package com.lwk.test2; import java.util.Scanner; public class Sum { Scanner input = new Scanner(System.in); public int sumParams(int nums[]) {  int maxSum = 0;  for (int i = 0; i < nums.length; i++) {   int sum = 0;   for (int j = i; j < nums.l

定义一个整型数组,返回该数组中子数组和的最大值

对于老师上课的题目,要想获得子函数最大值,首先进行数组的遍历,在遍历起初,对最大值进行初始化为数组的第一个元素,每次遍历,求得该子数组的和,并将此和与最大值进行比较,若小于 最大值,则进行下一次的遍历,直到结束.此处用到三个for循环,来进行次数的控制.第一个 for(i = 0; i <length; i++),用来完成所有数组的循环,第二个for(j = i; j <length; j++)用来表示从第几个元素开始,寻找子数组,第三个 for( k = i; k <= j; k++)

算法原型---求数组中子数组和最大的值

num在遍历数组过程中表示遍历到当前位置子数组和的最大值 public class Main { public static void main(String[] args) { int[] a = new int[8]; a[0] = 3; a[1] = -2; a[2] = 1; a[3] = -6; a[4] = 3; a[5] = 2; a[6] = -1; a[7] = 3; System.out.println(res(a)); } public static int res(int