数组和

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也不是问题。

posted @ 2015-04-02 16:31  非非是  阅读(211)  评论(1编辑  收藏  举报