最大子列和问题java动态规划
时间: 2024-01-15 15:19:45 浏览: 82
最大子列和问题是一个经典的算法问题,它的目标是在一个给定的整数序列中找到一个连续子序列,使得该子序列的和最大。下面是使用动态规划解决最大子列和问题的Java代码示例:
```java
public class MaxSubarraySum {
public static int maxSubarraySum(int[] nums) {
int maxSum = nums[0];
int currentSum = nums[0];
for (int i = 1; i < nums.length; i++) {
currentSum = Math.max(nums[i], currentSum + nums[i]);
maxSum = Math.max(maxSum, currentSum);
}
return maxSum;
}
public static void main(String[] args) {
int[] nums = { -2, 1, -3, 4, -1, 2, 1, -5, 4 };
int maxSum = maxSubarraySum(nums);
System.out.println("Max subarray sum: " + maxSum); // 输出:6
}
}
```
上述代码中,我们使用两个变量`maxSum`和`currentSum`来记录当前的最大子列和和当前的子列和。我们遍历整个数组,对于每个元素,我们比较将其与当前子列和相加后的结果,以及当前元素本身,取较大值作为新的当前子列和。同时,我们也更新最大子列和。最后,返回最大子列和即可。
阅读全文