http://acm.hdu.edu.cn/showproblem.php?pid=1003
思路:
1. 设数组为nums= [1,2,-3,9,-7,4] , max=Integer.MIN, sum=0
2. sum = sum>=0 ? sum += nums[i] : nums[i]
3. if(sum>max) { max = sum; 记录子列的首尾 }
sum=1 ; max=1
sum=3 ; max=3
sum=0 ; max=3
sum=9 ; max=9
sum=2 ; max=9
sum=6 ; max=9
时间复杂度 o(n)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 行数
int count = input.nextInt();
// 遍历case
for (int i = 1; i <= count; i++) {
// 数量
int numCount = input.nextInt();
// 获取该次全部数字
int sum = 0;
int max = Integer.MIN_VALUE;
int begin = 1;
int x = 1, y = 1;
for (int j = 1; j <= numCount; j++) {
int num = input.nextInt();
if (sum >= 0) {
sum += num;
} else {
begin = j;
sum = num;
}
if (sum > max) {
max = sum;
x = begin;
y = j;
}
}
System.out.println("Case " + i + ":");
System.out.println(max + " " + x + " " + y);
if (i != count) {
System.out.println();
}
}
}
}