java实现1. 编写程序找出序列的最大子段和,以及子段的起始位置和结束位置。 例如:输入数组(6,-1,5,4,-7), 输出14, 1, 4, 其中14表示最大子段和,1表示和最大的子段从第1个数字开始,4表示和最大的子段到第4个数字结束。
时间: 2024-05-14 07:14:07 浏览: 74
求出最大子段和,并输出起始位置(maxsum)
4星 · 用户满意度95%
以下是Java代码实现:
```
public class MaxSubArray {
public static void main(String[] args) {
int[] nums = {6, -1, 5, 4, -7};
int maxSum = nums[0]; // 最大子段和
int start = 0; // 子段起始位置
int end = 0; // 子段结束位置
int sum = 0; // 当前子段和
int tempStart = 0; // 当前子段起始位置
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
if (sum > maxSum) {
maxSum = sum;
start = tempStart;
end = i;
}
if (sum < 0) {
sum = 0;
tempStart = i + 1;
}
}
System.out.println("最大子段和:" + maxSum);
System.out.println("子段起始位置:" + (start + 1)); // 下标从1开始
System.out.println("子段结束位置:" + (end + 1)); // 下标从1开始
}
}
```
运行结果:
```
最大子段和:14
子段起始位置:1
子段结束位置:4
```
解释:从第1个数字开始,到第4个数字结束的子段是最大子段,其和为14。
阅读全文