一维数组环的最大子数组和
1.实现功能
实现一个数组环的最大自数字和的计算。
2.实验思路
计算最大子数组和:从第一个数开始往后加记录为sum,当sum小于零时,使sum等于零,并继续往后加,取记录的sum的最大值;
计算最大子数组和,记录,然后把第一个数放到最后,计算最大子数组和,记录,然后再把第一个数放到最后,这样执行n次,取记录和的最大值。
3.实验代码
package 数组环; import java.util.Random; import java.util.Scanner; public class aa { public static void main(String[] args) { // TODO Auto-generated method stub int a[]; int Length,sum,max; int i,k,j,l; //随机产生一个数组 Scanner scanner = new Scanner(System.in); System.out.print("输出随机产生的数组的长度:"); Length=scanner.nextInt(); scanner.close(); a=new int[Length]; for(i=0;i<Length;i++) { Random random = new Random(); a[i]=random.nextInt(19); a[i]=a[i]-9; System.out.print(a[i]); System.out.print(" "); } l=0; for(i=0;i<Length;i++) { if(a[i]<0) l+=1; } if(l==Length)//如果Length个数均为负数 { max=a[0]; for(i=0;i<Length;i++) if(a[i]>max) { max=a[i]; } } else { max=0; for(j=0;j<Length;j++) { k=a[0]; for(i=0;i<Length-1;i++) { a[i]=a[i+1]; } a[Length-1]=k; sum=0; for(i=0;i<Length;i++) { sum=sum+a[i]; if(sum>max) { max=sum; } if(sum<0) { sum=0; } } } } System.out.println(""); System.out.print("最大和为"); System.out.print(max); } }
4.结果截图