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

当看到这道题目的时候,没有理解清楚题目,在(数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和)这个条件想了想方法,不知道该如何去写。

后来理解清楚后用了这个方法去写:把第一个数当成一个子数组、第1、2个数在组成一个数组、第1、2、3数在组成一个数组,以此类推 求出每个数组的和,并将每个数组的和存到另一个数组中

代码如下:

for(int j=0;j<a.length;j++)
{
a[j] = Integer.parseInt(s[j]);
sum=sum+a[j];
b[m]=sum;
m++;
}

接下来开始比较每个和的大小,然后输出最大值。

max=b[0];
for(int i=1;i<m;i++)
{
if(max<b[i])
{
max=b[i];
}
}
System.out.println("max="+max);
}

最后那个复杂程度不知道该如何去写,还没有完善。

下面是整个代码

package shuzu;
import java.util.Scanner;
public class main {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        String str=sc.nextLine().toString();
        String s[]=str.split(" ");
        int sum=0,m=0;
        int max = 0;
        int a[]=new int[s.length];
        int [] b=new int[30];
        for(int j=0;j<a.length;j++)
        {
            a[j] = Integer.parseInt(s[j]);
              sum=sum+a[j];
              b[m]=sum;
              m++;            
        }
        for(int k=0;k<m;k++)
        {
            System.out.println("sum="+b[k]); 
        
        }
        max=b[0];
        for(int i=1;i<m;i++)
        {
            if(max<b[i])
            {
                max=b[i];
            }
        }
        System.out.println("max="+max);
    }
    
}

原文地址:https://www.cnblogs.com/lishengming00/p/10500534.html