动态规划C
来源:互联网 发布:人工智能带来的便利 编辑:程序博客网 时间:2024/06/11 09:29
Given a sequence a[1],a[2],a[3]……a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14.
Input
The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line starts with a number N(1<=N<=100000), then N integers followed(all the integers are between -1000 and 1000).
Output
For each test case, you should output two lines. The first line is “Case #:”, # means the number of the test case. The second line contains three integers, the Max Sum in the sequence, the start position of the sub-sequence, the end position of the sub-sequence. If there are more than one result, output the first one. Output a blank line between two cases.
Sample Input
25 6 -1 5 4 -77 0 6 -1 1 -6 7 -5
Sample Output
Case 1:14 1 4Case 2:7 1 6
import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;import java.util.ArrayList;import java.util.Scanner;/** * Created by 95112 on 10/23/2017. */public class MaxSum { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ArrayList<ArrayList<String>> answers = new ArrayList<>(); int n; n = scanner.nextInt(); for (int i = 0 ; i < n ; i ++) { ArrayList<String> answer = new ArrayList<>(); answer.add("Case "+(i+1)+":"); int amount = scanner.nextInt(); int[] input = new int[amount]; for (int j = 0 ; j < amount; j++) input[j] = scanner.nextInt(); int start = 0; int end; int answerStart= 0; int answerEnd= 0; int answerSum = Integer.MIN_VALUE; int sum = 0; for (int j = 0 ; j < amount; j++) { sum += input[j]; if (sum > answerSum) { answerSum = sum; answerStart = start+1; answerEnd = j+1; } if (sum < 0) { sum = 0; start = j + 1; } } answer.add(answerSum+" "+answerStart+" "+answerEnd); answers.add(answer); } int i = 0; for (ArrayList<String> answer : answers){ for (String a : answer) System.out.println(a); if (i< answers.size()-1) System.out.println(""); i++; } }}
- 动态规划 Problem C
- CF374/C(动态规划)
- 【C++】动态规划
- 动态规划C
- c 动态规划 矩阵相乘
- 动态规划—Problem C
- 动态规划C语言初学
- 动态规划 01背包 c算法
- 动态规划C++::杭电ACM1003
- 【C++】 动态规划—矩阵链乘
- NBUT 动态规划专题C - 滑雪
- C语言动态规划(1)___Bridging signals
- C语言动态规划(2)___Maximum sum
- 暑假-动态规划 I-(C- 免费馅饼)
- BZOJ 2302 HAOI2011 Problem c 动态规划
- 动态规划C++::杭电ACM1003
- 动态规划——problem c
- 动态规划 III——C - Travel
- 51nod1673 树有几多愁(状压DP)
- iOS十进制转二进制
- email类型
- 如何选择数据结构及Map接口
- 笔记2——C 数据类型和变量
- 动态规划C
- 如何才能通俗易懂地解释JS中的的"闭包"?
- OpenJ_Bailian
- 仿写一个简单的jQuery(学习笔记)
- 列宽变化刷新页面
- Java的内存模型(一)
- NOIP 2017.10.23 总结+心得
- sscanf
- C++之模板篇