求出数组的最大子集,并求和 (一)

2014-11-24 11:39:10 · 作者: · 浏览: 11

一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和,求所有子数组的和的最大值,并打印出该数组。


这个程序的算法其实很简单,找出数组中所有的正数就可以了,然后求和,第一个代码保证了输出的数组最后一个元素后面没有逗号。

如果只输出最大和,那就简单多了,大家可以看第二段代码。

[java]
import java.util.*;
class ArraySort
{

public static void find(int [] array)
{
int sum=0;
List result=new ArrayList();
for(int temp:array)
{
if(temp>0)
{
result.add(temp);
}
}

for(int i=0;i {
if(i==(result.size()-1))
{
System.out.print((int)result.get(i));
sum+=(int)result.get(i);
System.out.println(" sum="+sum);
}
else
{
System.out.print((int)result.get(i)+",");
sum+=(int)result.get(i);
}
}

}
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);

while(sc.hasNext())
{
String str=sc.nextLine();
String[] arr=str.split(",");
int[] array=new int[arr.length];
for(int i=0;i {
array[i]=new Integer(arr[i]);
}
if(array.length==arr.length)
ArraySort.find(array);
}
}
}

import java.util.*;
class ArraySort
{

public static void find(int [] array)
{
int sum=0;
List result=new ArrayList();
for(int temp:array)
{
if(temp>0)
{
result.add(temp);
}
}

for(int i=0;i {
if(i==(result.size()-1))
{
System.out.print((int)result.get(i));
sum+=(int)result.get(i);
System.out.println(" sum="+sum);
}
else
{
System.out.print((int)result.get(i)+",");
sum+=(int)result.get(i);
}
}

}
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);

while(sc.hasNext())
{
String str=sc.nextLine();
String[] arr=str.split(",");
int[] array=new int[arr.length];
for(int i=0;i {
array[i]=new Integer(arr[i]);
}
if(array.length==arr.length)
ArraySort.find(array);
}
}
}如果程序要求直接输入最大自己的和,那么代码如下


[java]
import java.util.*;
class ArraySort
{

public static int find(int [] array)
{
int sum=0;
List result=new ArrayList();
for(int temp:array)
{
if(temp>0)
{
result.add(temp);
}
}

for(int i=0;i {
sum+=(int)result.get(i);
}
return sum;

}
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int a=0;
while(sc.hasNext())
{
String str=sc.nextLine();
String[] arr=str.split(",");
int[] array=new int[arr.length];
for(int i=0;i {
array[i]=new Integer(arr[i]);
}
if(array.leng