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 }

 

 

本次个人作业只能使用复杂度较大的程序实现其功能,一开始思路不够清晰,使用自然语言写出思路,再使用代码实现每一个模块,将复杂问题简单化,简单问题逻辑化。

 

posted on 2019-03-10 18:54  生长的力量  阅读(113)  评论(0编辑  收藏  举报