一、实验代码:
import java.util.Scanner;
 
public class SDS {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入数组中数字的个数:");
        int n=sc.nextInt();
        int[] a=new int [n];
        System.out.println("请输入数组:");
        for(int i=0;i<n;i++)
        {
           a[i]=sc.nextInt();
        }
        int a1=findMaxSum(a,n);
        int b,temp,i,sum=0;
        for(b=1;b<n;b++)
        {
            temp=a[0];
            for(i=1;i<=n-1;i++)
            {
               a[i-1]=a[i];        
            }
            a[n-1]=temp;
            if(findMaxSum(a,n)>=sum)
            {
             sum=findMaxSum(a,n);
            }
        }
        int a2=sum;
        if(a1>=a2)
        {
            System.out.println("最大子数组和:" + a1);
        }
        else
        {
            System.out.println("最大子数组和:" + a2);
        }
 
             
    }
     public static int findMaxSum(int a[],int n)
     {
         int sum=0;
          
            int b=0;
               
            for(int i=0; i<n; i++)
            {
                if(b<0)        
                    b=a[i];
                else
                    b+=a[i];
                if(sum<b)
                    sum=b;
            }
            return sum;
     }
}
二、实验截图:
    
三、实验思想:
这个实验主要是求最大子数组的的值 的和的问题,所以要编写寻找最大值的函数,主要思想是计算前几个数组的和是否为负数。
原文:http://www.cnblogs.com/yirenzui/p/6670539.html