import java.util.LinkedList;
import java.util.List;
public class E42GreatestSumOfSubArray {
//找出数组中连续子数组的最大和
//动态规划思想:max(f(data[i])),f(data[i])为以第i个元素结尾的连续子数组之和
public static int getGreatestSum(int[] data, int length){
if (data == null || length <= 0)
throw new IllegalArgumentException("Invalid Input");
int currentSum = 0;
int greatestSum = 0x80000000;
//保存和最大的连续子数组
//List<Integer> list = new LinkedList<>();
for (int i = 0; i < length; i ++){
if (currentSum < 0) {
currentSum = data[i];
//list.clear();
}
else{
currentSum += data[i];
//list.add(data[i]);
}
if (currentSum > greatestSum)
greatestSum = currentSum;
}
//输出和最大连续子数组,用于测试
//for (int number : list)
//System.out.printf("%d\t", number);
return greatestSum;
}
public static void main(String[] args){
int[] data = {1, 2, -1, 6, 7, -5, 12};
System.out.println("\nSum: " + E42GreatestSumOfSubArray.getGreatestSum(data, 7));
}
}
连续子数组的最大和(Java实现)
最新推荐文章于 2025-03-08 23:03:59 发布
本文介绍了一种使用动态规划思想求解数组中连续子数组最大和的算法。通过迭代检查每个元素,决定是否加入现有子数组或开始新的子数组,以达到最大和为目标。文章包含完整的Java代码实现。
242

被折叠的 条评论
为什么被折叠?



