一、实验题目
返回一个整数数组中最大子数组的和。
二、实验要求
输入一个一维整形数组,数组里有正数也有负数。
一维数组首尾相接,象个一条首尾相接带子一样。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。
源代码:
import java.util.Scanner;
public class Max
{
public static void main(String[] args)
{
int shu[]=new int[100];
int k=0;
Scanner scanner=new Scanner(System.in);
System.out.println("请输入若干个整数:");
String a=scanner.next();
if(a.equals("#")) System.out.println("您什么都没有输入,故没有最大值!");
else
{
shu[k]=Integer.parseInt(a);
k++;
a=scanner.next();
while(!a.equals("#"))
{
shu[k]=Integer.parseInt(a);
k++;
a=scanner.next();
}
System.out.println("数组中连续数的最大值为:"+MaxSum(shu,k));
}
}
static int MaxSum(int[] arr,int k)
{
int Sum=0;
int maxSum=0;
int len=k;
int d;
int i;
int j;
for(j=0;j<len;j++)
{
for (i=j;i<len+j;i++)
{
if(i>len-1) d=i-len;
else d=i;
Sum+=arr[d];
if(Sum<0)
{
Sum=0;
}
if(Sum>maxSum)
{
maxSum=Sum;
}
}
Sum=0;
}
if(maxSum==0)
{
for(i=0;i<len;i++)
{
if(i==0)
{
maxSum=arr[i];
}
if(arr[i]>maxSum)
{
maxSum=arr[i];
}
}
}
return maxSum;
}
}
原文:http://www.cnblogs.com/ZHAOHAN666/p/6691538.html