简单的DP问题
package 动态规划;
import java.util.Scanner;
public class _1003_最长子序列 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
int m = sc.nextInt();
// 最大值起始端
int max_begin = 0;
// 最大值结束端
int max_end = 0;
// 初始最大值很小
int max = -99999;
// 现在的大小
int now = 0;
// 新的起始点
int new_begin = 0;
// 下一个值
int next;
for (int j = 0; j < m; j++) {
next = sc.nextInt();
// 如果now的值小于0,则把next的值赋给now
if (now < 0) {
new_begin = j;
now = next;
} else {
// 否则now加上next的值
now += next;
}
// 如果now,即现在的值大于max,则max的起始点为new_begin
// max=now
// max的结束点为j
if (now > max) {
max_begin = new_begin;
max = now;
max_end = j;
}
}
// 按照题目要求输出即可
System.out.println("Case " + (i + 1) + ":");
System.out.println(max + " " + (max_begin + 1) + " "
+ (max_end + 1));
if (i < n - 1) {
System.out.println();
}
}
}
}