1、生成一个整型数组
2、生成子数组:按照顺序遍历,以遍历到的数组元素为基准,依次累加求和,将每一个基准生成的子数组和存在第二个数组中。
3、求出每个子数组的和:将每一个基准生成的子数组和求出最大值存在第三个数组里。
4、求出最大子数组的和:求出第三个数组里的最大数组元素即为最大子数组的和。
5、输出
1、累加求和,一开始没有使用sum进行中间传值,而是直接传值给第二个数组,由于数组下标的错误导致累加求和失败
2、算法复杂度太大
1 package main; 2 3 import java.util.Arrays; 4 import java.util.Scanner; 5 6 public class main { 7 public static void main(String[] args) { 8 Scanner cin=new Scanner(System.in); 9 int[] a = new int[5]; 10 int[] b = new int[5]; 11 int[] c = new int[5]; 12 // 生成整型数组 13 for (int i = 0; i < a.length; i++) { 14 a[i]=cin.nextInt(); 15 } 16 17 for (int j = 0; j < c.length; j++) { 18 int sum=0; 19 for (int i = j; i < a.length; i++) {//生成各个子数组 20 sum=a[i]+sum; //(连续的一个和多个整数组成) 21 b[i]=sum; //求出各个子数组的和 22 } 23 int max=b[0]; //比较各个子数组的和的大小 24 for (int i = j; i < b.length; i++) { 25 if(max<b[i])max=b[i]; 26 } 27 c[j]=max; 28 } 29 int max=c[0]; 30 for (int i = 0; i < c.length; i++) {//输出最大子数组的和 31 if(max<c[i])max=c[i]; 32 } 33 System.out.println(Arrays.toString(a)); 34 System.out.println(Arrays.toString(c)); 35 System.out.println(max); 36 } 37 }
本次个人作业只能使用复杂度较大的程序实现其功能,一开始思路不够清晰,使用自然语言写出思路,再使用代码实现每一个模块,将复杂问题简单化,简单问题逻辑化。