美文网首页
求连续子序列的最大值

求连续子序列的最大值

作者: 研途更疯狂 | 来源:发表于2015-04-17 17:17 被阅读57次
import java.util.*;

public class Main {

    public static void main(String[] args) {

        Scanner scan=new Scanner(System.in);
        int count=scan.nextInt();
        int[] result=new int[3*count];
        for(int i=0;i<count;i++){
            int a=scan.nextInt();
            int[] a1=new int[a];
            for(int j=0;j<a;j++){
                a1[j]=scan.nextInt();
            }
            int[] b=maxSubArraySum3(a1);
            for(int k=0;k<b.length;k++){
                result[i*3+k]=b[k];
            }   
        }
        
        for(int k=1;k<count;k++){
            System.out.println("Case "+k+":");
            System.out.println(result[k*3-3]+" "+result[k*3-2]
                    +" "+result[k*3-1]);
            System.out.println();
        }
            System.out.println("Case "+count+":");
            System.out.println(result[count*3-3]+" "+result[count*3-2]
                    +" "+result[count*3-1]);
        
    }
    
      static int[] maxSubArraySum(int[] a){ 
          int sum=0;
          int mStart = 0,mEnd = 0;    
            for(int start=0;start<a.length;start++){
                for(int end=start;end<a.length;end++){
                    int thissum=0;
                    for(int index=start;index<=end;index++){
                        thissum+=a[index];
                    }
                    if(thissum>sum){
                        sum=thissum;
                        mStart=start;
                        mEnd=end;
                    }
                }
            }     
          return new int[]{sum,mStart+1,mEnd+1};
        } 
      
      static int[] maxSubArraySum2(int[] a){ 
          int sum=0;
          int mStart = 0,mEnd = 0;    
            for(int start=0;start<a.length;start++){
                int thissum=0;
                for(int end=start;end<a.length;end++){          
                    thissum+=a[end];
                    if(thissum>sum){
                        sum=thissum;
                        mStart=start;
                        mEnd=end;
                    }
                }
            }     
          return new int[]{sum,mStart+1,mEnd+1};
     } 
      
      
      static int[] maxSubArraySum3(int[] a){
          
          int thissum=0;int maxsum=0;int start=0;int end=0;
          
          for(int j=0;j<a.length;j++){
              
              thissum+=a[j];
              
              if(thissum<0){
                thissum=0;
                start=j+1;
              }else if(thissum>maxsum){
                      maxsum=thissum;
                      end=j;
              }
              
          }
          return new int[]{maxsum,start+1,end+1};
          
      }
      
}

相关文章

  • 求连续子序列的最大值

  • 360一面(已跪)

    1.先来了两个算法题 给一个无序的序列,序列中的数为整数(可正可负),求连续子序列的和的最大值。例:-8,1,3,...

  • Java 最大子列和问题(Maximum Subsequence

    问题 给定N个整数序列 求函数 的最大值。 算法一 算出所有可能的连续子列的和,并比较 时间复杂度O(N^3) 算...

  • 53. Maximum Subarray

    求一个给定序列的最大连续子序列和,如[-2,1,-3,4,-1,2,1,-5,4]的最大连续子序列为[4, -1,...

  • 求连续子序列最大和

    给定一个无序数组,求最大的连续子数组的和 解法一: 思路:暴力解法,最大序列肯定以数组中某个数为起点,则依次遍历以...

  • 30、最大连续子序列的和

    题目描述求最大连续子序列的和,序列中包含正负数。例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大...

  • 动态规划(六)

    最长上升子序列 给定一个整数序列,求,其中最长上升子序列长度。(不要求子序列一定是连续的,只要相对位置不变即可)[...

  • 最大连续子序列和

    描述 给定一个数组,求出最大的连续子序列和 思路 在任何讲动态规范的地方都能找到求最大连续子序列和的例子。具体来说...

  • Java算法:求两个字符串的最长公共子序列问题

    最长公共子序列问题: 给定两个字符串A、B,求A与B的最长公共子序列(子序列不要求是连续的)举例:字符串A: ab...

  • 【每周一题】2017.3.13 HDU1003 解题报告

    题目描述 给出一个序列 a[1],a[2],a[3]......a[n], 请计算出它的子序列的最大值。 子序列就...

网友评论

      本文标题:求连续子序列的最大值

      本文链接:https://www.haomeiwen.com/subject/xdsefttx.html