编写Java函数,计算数组中连续的最大子序列和
发布时间:2023-11-10 03:52:12
以下是一个计算数组中连续的最大子序列和的Java函数的实现:
public class MaxSubarraySum {
public static int maxSubarraySum(int[] arr) {
int maxSum = arr[0]; // 初始化最大子序列和为 个元素
int currentSum = arr[0]; // 初始化当前子序列和为 个元素
for (int i = 1; i < arr.length; i++) {
currentSum = Math.max(arr[i], currentSum + arr[i]); // 更新当前子序列和
maxSum = Math.max(maxSum, currentSum); // 更新最大子序列和
}
return maxSum;
}
public static void main(String[] args) {
int[] arr = {1, -2, 3, 10, -4, 7, 2, -5};
int maxSum = maxSubarraySum(arr);
System.out.println("连续的最大子序列和为:" + maxSum);
}
}
该函数使用了动态规划的思想。初始化最大子序列和和当前子序列和为数组的 个元素。然后从数组的第二个元素开始遍历,每次计算当前元素和当前子序列和的和,与当前元素本身进行比较,选择较大的值作为新的当前子序列和。同时,每次都将当前子序列和与最大子序列和进行比较,选择较大的值作为新的最大子序列和。最后返回最大子序列和,即为连续的最大子序列和。
