题目要求:
设计思路:
1、随机生成一个数组
2、对数组中每个成员判断其前一个数是否大于0,若大于0该成员变更为其本身加上前一个数,若小于0则不变
3、遍历数组找到最大值即为所求
源码
package main; public class count { public static void main(String[] args) { System.out.println("当前数组为:"); int n = (int) (Math.random()*20); int[] arr = generateArray(n, 100, -100); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } System.out.println(); for (int i = 1; i < arr.length; i++) { if (arr[i-1] > 0) { arr[i] = arr[i] + arr[i-1]; } } int max = arr[0]; for (int i = 1; i < arr.length; i++) { if(arr[i]>max) max = arr[i]; } System.out.println("最大子数组之和为: "+max); } public static int[] generateArray(int len,int max,int min) { int[] arr = new int[len]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random()*(max-min)+min); } return arr; } }
结果样例