数组和
1.实现功能
求一个数组的最大子数组和,时间复杂度为O(n)。
2.实验代码
package shuzu; import java.util.Random; import java.util.Scanner; public class bb { public static void main(String[] args) { // TODO Auto-generated method stub int a[]; int i,g,b=0,c=0; Scanner scanner = new Scanner(System.in); System.out.print("输出随机产生的数组的长度:"); g=scanner.nextInt(); a=new int[g]; scanner.close(); for(i=0;i<g;i++) { Random random = new Random(); a[i]=random.nextInt(19); a[i]=a[i]-9; System.out.print(a[i]); System.out.print(" "); } System.out.println(" "); for(i=0;i<g;i++) { b=b+a[i]; if(b>c) { c=b; } if(b<0) { b=0; } System.out.print(b); System.out.print(" "); } System.out.println(); System.out.println(c); } }
3.结果截图
4.队员
5.实验思路
从第一位开始累加,当累加和小于零时,设置为零,从下一位开始继续累加。并记录所有的累加和,取最大。如果最大和为零说明所有数均为负,直接取数组中的最大值做最大和。1000位不是问题,int32也不是问题。