摘要:
《编程之美》上的一个经典问题,拿来练习一下给定一整型数组a[0...n],找出连续子串a[x...y],使得和最大,其中,0<=x<=y<=n。方法很多,采用动态规划的方法可以达到线性O(n)的时间复杂度。动态规划需要满足无后效性,分析这个问题,考察数组a[0...m](m<n)的最大连续子串和,有三种可能的情况。第一:最大的连续子串中不包含a[m],则result[0...m]=result[0...m-1],和前m-1个元素的最大子串和相同。第二:由包含a[m-1]的前m-1个元素的最大子串和,加上a[m]组成。第三:由a[m]自己单独组成假定以a[i]结尾的和最大 阅读全文
posted @ 2013-05-20 14:38
现代魔法入门
阅读(395)
评论(0)
推荐(0)