最大字段和问题

来源:互联网 发布:协同过滤算法流程图 编辑:程序博客网 时间:2024/06/01 10:09

本人大学生一枚,最近做老师布置的作业:求一组整数的最大子段和 (例如{2,-1,4,-5,6,-3}) 以下是本人的作业代码:

public class Test_001 {    public static void main(String[] args)throws Exception{          int array[] = {2,-1,4,-5,6,-3};//这里直接定义了数组,也可以输入        int count,i,j;         int max = 0;        count = 6;        for(i=0;i<=count;i++)              for(j=i;j<count;j++)              {                  int sum=0;                  sum= sum + array[j];                     if(sum>max){                      max=sum;                                   }                    }           System.out.println("数组的最大子段和胃"+max );         }  }

本来觉得自己的代码还不错,比其他同学的时间复杂度好。但是却没想到可以用动态规划优化。

static int maxSubsegment(int[] a,int n) {        int temp = 0,maxn = 0,k=1;        int start,end;        for(int i = 0 ; i < n ;i++)        {            temp+=a[i];            if(temp > maxn)            {                maxn = temp;start = k ;end = i;            }            if(temp < 0)            {                temp = 0;k = i+1;            }        }        return maxn;    }

小结:发现之前都是依葫芦画瓢的敲代码,并没有思考过为什么,导致经常有想当然就写了。然而方法不只有一种,不要固化自己的想法。

原创粉丝点击