HDU 1003 求最大连续子序列

来源:互联网 发布:淘宝小件静物摄影技巧 编辑:程序博客网 时间:2024/06/03 19:58

简单的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的值赋给nowif (now < 0) {new_begin = j;now = next;} else {// 否则now加上next的值now += next;}// 如果now,即现在的值大于max,则max的起始点为new_begin// max=now// max的结束点为jif (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();}}}}