最大子数组

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);
    }

}

在这个计算最大环子数组的程序中,我们可以先剪开这个环,直接来对这个子数组进行判断,然后再将环从下一个位置剪开,再次对其进行判断,一直进行下去,最终将每次判断出的结果进行比较,取其中最大的哪个,这样就能够计算出环子数组的最大子数组。

posted @ 2017-03-31 20:05  20153143  阅读(112)  评论(0编辑  收藏  举报