01-复杂度2. Maximum Subsequence Sum (25)
来源:互联网 发布:长镜头知乎 编辑:程序博客网 时间:2024/05/21 11:21
Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, Ni+1, ..., Nj } where 1 <= i <= j <= K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements. For example, given sequence { -2, 11, -4, 13, -5, -2 }, its maximum subsequence is { 11, -4, 13 } with the largest sum being 20.
Now you are supposed to find the largest sum, together with the first and the last numbers of the maximum subsequence.
Input Specification:
Each input file contains one test case. Each case occupies two lines. The first line contains a positive integer K (<= 10000). The second line contains K numbers, separated by a space.
Output Specification:
For each test case, output in one line the largest sum, together with the first and the last numbers of the maximum subsequence. The numbers must be separated by one space, but there must be no extra space at the end of a line. In case that the maximum subsequence is not unique, output the one with the smallest indices i and j (as shown by the sample case). If all the K numbers are negative, then its maximum sum is defined to be 0, and you are supposed to output the first and the last numbers of the whole sequence.
Sample Input:10-10 1 2 3 4 -5 -23 3 7 -21Sample Output:
10 1 4
解:
import java.util.Scanner;public class Main{/***(方法说明)*@param 无*@return 无*@throws 无*/public static void main(String[] args){Scanner scanner = new Scanner(System.in);//正整数 k int k = scanner.nextInt();//最大子列和int max=scanner.nextInt();//最大子列和的开始下标 ,到当前下标i的和int sum=max;//开始的数字int start = max;int prestart =max;boolean pre = false;//结束的数字int end =max;int n=0;for(int i=1;i<k;i++){ n=scanner.nextInt();sum = sum+n;if(n>sum){sum=n;prestart =n;pre=true;if(n>max) {max=n;if(pre)start = prestart;end = n;}}else if(sum>max){max = sum;if(pre)start = prestart;end = n;}}//记录最大子列和if(max>=0)System.out.println(max+" "+start+" "+end);else System.out.println(0+" "+start+" "+n);} }
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2. Maximum Subsequence Sum (25)
- 01-复杂度2.Maximum Subsequence Sum
- PAT: 01-复杂度2. Maximum Subsequence Sum
- 01-复杂度2. Maximum Subsequence Sum
- 关于数据块出现的游离坏块的实验:
- Android两种不同的方法去实现图像的放大与缩小
- Leetcode:Remove Duplicates from Sorted Array
- truss 命令
- memcached和redis的区别
- 01-复杂度2. Maximum Subsequence Sum (25)
- POJ 3321 Apple Tree 线段树+DFS
- Leetcode:Remove Element
- PROC系列之---/proc/pid/stat
- Ubuntu The Eclipse executable launcher was unable to locate its companion shared library.
- 安装web压力测试工具--JMeter
- 【转】C#实现UDP数据包大文件分包传输和接收组包
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- PROC系列之---/proc/stat/