import java.util.Scanner; public class Ceshi { public static void main(String args[]){ Scanner sc=new Scanner(System.in); int L; System.out.println("请输入数组长度"); L=sc.nextInt(); int a[]=new int[L]; int c[]=new int[L]; int sum1[]=new int[L]; int d=sum1[0]; System.out.println("请输入要进行处理的数(L个):"); for(int i=0;i<L;i++) { c[i]=sc.nextInt(); } for(int j=0;j<L;j++){ for(int k=0;k<L;k++){ a[k]=c[(j+k)%L]; } int sum=a[0]; int b=0; for(int i=0;i<L;i++){ if(b<0) { b=a[i]; } else{ b+=a[i]; } if(sum<b){ sum=b; } sum1[j]=sum; } if(d<sum1[j]){ d=sum1[j]; } } System.out.print("最大子数组和为:"+d); } }
在这个计算最大环子数组的程序中,我们可以先剪开这个环,直接来对这个子数组进行判断,然后再将环从下一个位置剪开,再次对其进行判断,一直进行下去,最终将每次判断出的结果进行比较,取其中最大的哪个,这样就能够计算出环子数组的最大子数组。