当看到这道题目的时候,没有理解清楚题目,在(数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和)这个条件想了想方法,不知道该如何去写。
后来理解清楚后用了这个方法去写:把第一个数当成一个子数组、第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); } }