HDU 1003 最大连续子序列

 

  看数据结构与算法分析Java语言描述的时间复杂度分析时,看到经典的最大子序列和问题,想起来这到以前用C++写过,现在学了Java试一下能不能AC。

  PS:不知为什么我前面用System.out.printf()函数一直输出格式错误,交了好几遍都不行,后来改成System.out.println()又可以了...

 

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4 
 5     public static void main(String[] args) {
 6         int kase = 0;
 7         int[] arr = new int[100005];
 8         
 9         int t ;
10         Scanner in = new Scanner(System.in);
11         t = in.nextInt();
12         while(t-- != 0){
13             int n = in.nextInt();
14             for(int i = 0; i < n; ++i){
15                 arr[i] = in.nextInt();
16             }
17             int sum = arr[0];
18             int res = sum;
19             int fst = 0, lst = 0;
20             int nfst = 0;
21             for(int i = 1; i < n; ++i){
22                 if(sum < 0){
23                     nfst = i;
24                     sum = arr[i];
25                 }else{
26                     sum += arr[i];
27                 }
28                 
29                 if(sum > res){
30                     fst = nfst;
31                     lst = i;
32                     res = sum;
33                 }
34             }
35             if(kase != 0){
36                 System.out.println();
37             }
38             System.out.println("Case "+(++kase)+":");
39             System.out.println(res+" "+(fst+1)+" "+(lst+1));
40         }
41         in.close();
42     }
43 }
View Code

 

posted @ 2017-04-09 03:53  tan90丶  阅读(184)  评论(0编辑  收藏  举报