解决方案 »

  1.   

      
        public static int maxsubsum(int[] seq)
        {
            int maxsum=-9999;
            int thissum=0;
            
     //遍历所有子序列(包括包含单个数的子序列)
            for(int i=0;i<seq.length;i++)
                for(int j=i;j<seq.length;j++)  
                  {
                    //计算每个子序列的和值,记录这些和值里的最大值以及开始结束位置
                    for(int k=i;k<=j;k++)
                    thissum += seq[k];
                    if(thissum >= maxsum) 
                     {
                        maxsum = thissum;
                        start = i;
                        end = j;
                     }
                  }
                     }你的子序列没遍历完,而且以0为界是什么意思呢
    这个还涉及到多个相同最大值和值子序列的情况没考虑
    如果要考虑的话需要将start,end设计为数组或则Map
    个人意见,仅供参考
      

  2.   

    public static int maxsubsum(int[] seq)
        {
            int maxsum=-9999;
            int thissum=0;
            
     //遍历所有子序列(包括包含单个数的子序列)
            for(int i=0;i<seq.length;i++)
                for(int j=i;j<seq.length;j++)  
                  {
                    //计算每个子序列的和值,记录这些和值里的最大值以及开始结束位置
                    for(int k=i;k<=j;k++)
                   {  thissum += seq[k];
                    if(thissum >= maxsum) 
                     {
                        maxsum = thissum;
                        start = i;
                        end = j;
                  
                     }
                    //重置thissum
                    thissum =0;
                    }
                  }
                 
    return maxsum;    }
     上网本没法测试,尝试着写,呵呵
      

  3.   

    还是不管用
    这是java代码import java.util.Scanner;public class Main {
    public static void main(String[] args) {
    Scanner in=new Scanner(System.in);
    int k=in.nextInt();
    int maxsum=0;
    int thissum=0;
    int current=0;
    for(int i=0;i<k;i++)
    {
    current=in.nextInt();
    thissum+=current;
    if (thissum>maxsum)
    maxsum=thissum;
    else if (thissum<0)
    thissum=0;
    }
    System.out.println(maxsum);
    }
    }
    这是C代码
    #include<stdio.h>
    int main()
    {
    int k,current;
    int maxsum=0,thissum=0;
    scanf("%d",&k);
    for(int i=0;i<k;i++)
    {
    scanf("%d",&current);
    thissum+=current;
    if(thissum>maxsum)
    maxsum=thissum;
    else if (thissum<0)
    thissum=0;
    }
    printf("%d\n",maxsum );
    }结果题目是01-1是我的 为什么差别这么大 java还是内存超了