一维数组环的最大子数组和

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.结果截图

原文地址:https://www.cnblogs.com/feifeishi/p/4429592.html