您的位置:首页 > 其它

计算最大子序列

2016-05-11 22:03 148 查看
给定整数序列,包括帧数和负数; 序列中连续的一个或多个整数组成一个序列,每个子序列求和。求和最大的子序列。

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: