求所有子数组的和的最大值

1.源代码

package 加减乘除;

import java.util.Scanner;

public class Max1
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.println("输入个数:");
        int k = in.nextInt();
        int[] shu = new int [k];//定义数组
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入"+k+"个整数:");
        for(int i=0;i<k;i++){
            shu[i]=in.nextInt();
        }
        System.out.println("数组中连续数的最大值为:"+MaxSum(shu,k));
    }

    static int MaxSum(int[] arr,int k)
    {
        int Sum=0;
        int maxSum=0;
        int len=k;
        int d;
        int i;
        int j;

        for(j=0;j<len;j++)
        {
            for (i=j;i<len+j;i++)
            {
                if(i>len-1) d=i-len;
                else d=i;
                Sum+=arr[d];
                if(Sum<0)
                {
                    Sum=0;
                }
                if(Sum>maxSum)
                {
                    maxSum=Sum;
                }
            }
            Sum=0;
        }

        if(maxSum==0)
        {
            for(i=0;i<len;i++)
            {
                if(i==0)
                {
                    maxSum=arr[i];
                }
                if(arr[i]>maxSum)
                {
                    maxSum=arr[i];
                }
            }
        }

        return maxSum;
    }
}

2.结果截图

3.设计思想

遍历计算所有情况的值来进行比较,输出最大的值

4.出现的问题

第一个数字和最后一个数字不能连在一起求和,没有算上前面的数

5.总结

最后功能成功实现,要进行两次for循环来计算遍历所有子数组的和求出最大值

时间: 2024-10-29 19:06:43

求所有子数组的和的最大值的相关文章

Python算法与数据结构--求所有子数组的和的最大值

Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室-玄魂 玄魂工作室秘书 玄魂工作室?昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 这个题目有多个解法,比如可以用一个二维数组存之前每个数据的和,然后在进行大小比较:但是这样时间负责度就是O(n2)了. 换个思路思考下,因为是要最大数,那么就不需要存储,只需要找最大值就可以了.但是为了找子序列的最大和,在遇到

输入一个整型数组,数组里有正数,也有负数。求所有子数组的和的最大值

题目: 输入一个整型数组,数组里有正数,也有负数. 数组中一个或连续的多个整数组成一个子数组. 求所有子数组的和的最大值.要求时间复杂度为 O(n). 解答: 1 public class Solution { 2 public static void main(String[] args) { 3 int[] arr = {1,-2,3,10,-4,7,2,-5}; 4 System.out.println(maxSub(arr)); 5 } 6 7 private static int ma

输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)

群里看到这道题,用python做了做, def find(array): v_sum = greatest = 0 for a in array: v_sum += a v_sum = 0 if v_sum < 0 else v_sum greatest = v_sum if v_sum > greatest else greatest if v_sum == 0: greatest = array[0] for a in array: greatest = a if greatest <

二维数组首尾相接,象个一条首尾相接带子一样,求所有子数组和的最大值

题目:返回一个二维整数数组中最大子数组的和. 要求: 1 输入一个二维整形数组,数组里有正数也有负数. 2 二维数组首尾相接,象个一条首尾相接带子一样. 3 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 4 求所有子数组的和的最大值.要求时间复杂度为O(n). 设计思想 目前的解决方案是最笨的方法,穷举,所以时间复杂度达不到题目的要求,还需要进一步的寻找答案 源代码 #include<iostream> #include<time.h> #include<

输入一个整形数组,元素有正有负,一个或者多个连续的元素为其子数组,求所有子数组中和的最大值

public class Zhejiang { public static void main(String[] args) { int[] arr=new int[] {1,-2,3,10,-4,7,2,-5}; int i=getGreatestSum(arr); System.out.println(i); } private static int getGreatestSum(int[] arr) { if (arr==null||arr.length==0) { return 0; }

3月31号周二课堂练习:结对开发----求二维数组组成的矩阵中子矩阵的最大值二

一.题目要求 1.1输入一个二维整形数组,数组里有正数也有负数. 1.2二维数组首尾相接,象个一条首尾相接带子一样. 1.3数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 1.4求所有子数组的和的最大值.要求时间复杂度为O(n). 二.结对要求 2.1两人结对完成编程任务. 2.2一人主要负责程序分析,代码编程. 2.3一人负责代码复审和代码测试计划. 2.4发表一篇博客文章讲述两人合作中的过程.体会以及如何解决冲突(附结对开发的工作照). 三.设计过程 上次已经算过二维数组中

首尾相连求最大子数组和

题目要求: 1.输入一个一维整形数组,数组里有正数也有负数. 2.一维数组首尾相接,象个一条首尾相接带子一样. 3.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值. 设计思想: 遍历数组里面的每一个数将第一个数变为最后一个数,具体算法 a[i-1]=a[i],这样又变成了一个新的一维数组,输出每个数组的最大子数组和,然后比较每个输出的和,找出最大的数 代码: import java.util.Scanner; public class shuzu { p

二维数组环求最大子数组

返回一个二维整数数组中最大联通子数组的和 2015年6月22日 1.题目 输入一个二维整形数组,数组里有正数也有负数. 二维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 2.设计思路 参照环状一维数组,将二维数组进行扩展.只将数组的列数扩大为原来的2*n-1,行数不变. 3.源代码 #include <iostream> #include<time.h> using namespace std

一维数组头尾相连求最大子数组

题目: 返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大. 同时返回最大子数组的位置. 求所有子数组的和的最大值.要求时间复杂度为O(n). 1. 设计思想: 因为已经写过了一维数组的求最大子数组程序.所以只是在原程序上进行修改.首先产生随机数数组,然后进行计算,因为要求时间复杂度