计算最大子序列

来源:互联网 发布:php读取中文文件名 编辑:程序博客网 时间:2024/06/05 14:37

给定整数序列,包括帧数和负数; 序列中连续的一个或多个整数组成一个序列,每个子序列求和。求和最大的子序列。


import java.util.ArrayList;
import java.util.Arrays;
public class MaxSequence
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
int[] array =
{ -1, 5, -2, -1, 4 };
System.out.println("sequence:" + Arrays.toString(array));
System.out.println("childSequence:" + max(array));
int[] array1 =
{ -1, 2, -2, -1, 4, 21, -2 };
System.out.println("sequence:" + Arrays.toString(array1));
System.out.println("childSequence:" + max(array1));


}


public static ArrayList<Integer> max(int[] array)
{
int maxSum = 0;
int currentSum = 0;
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < array.length; i++)
{
currentSum = currentSum + array[i];
list.add(array[i]);
if (currentSum > maxSum) // current sum
{
maxSum = currentSum;
} else if (currentSum <= 0)
{
list.clear();
currentSum = 0;
}
}
for (int i = list.size() - 1; i >= 0; i--)
{
if (list.get(i) <= 0)
{
list.remove(i);
} else
break;
}
return list;
}
}

0 0
原创粉丝点击