homework-1

看到这个题目开始我只能想到动态规划四个字,但具体采用什么方法,如何写成代码却还未成型。动态规划的典型特点就是利用之前的结果。于是我很快想到了之前一个比较典型的小程序,即求最长的连续字符串。这两个题目有很大的相似之处。我们都要从前向后进行一边扫描获取数值,然后进行动态规划,利用之前运算出的结果推出当前的结果。

例如,3,-7,9,4,-12,6,这一串数字,按照我的思路,应当先设置一个数组存放每个位置为止最大的子串值,并设max为最大字串值。现在设数组t[6].那么t[0]=3。max=3。我们开始扫描,到下标为1的数字时,我们看到3+(-7)=-4〉-7,那么我们取-4下标为1的位置的最大字串值,max=3。继续扫描到9,9+(-4)<9,那么我们取9为下标为2的位置的字串的最大值,继续扫描到4,4+9〉4,那么我们取13为下标为3位置的字串最大值,max=13继续扫描到-12,-12+13〉-12,取1为此位置最大字串值,max=13,继续扫描到6,6+1〉6,取7为此位置最大字串值,max=13。由此,我们知道最大的字串值是13。

这个算法 只用一遍扫描,复杂度即为n,并不复杂。能够快速联系以前学过的知识算是我的解题方法吧。

上一篇:【整理】Visual Studio快捷键


下一篇:在Ubuntu全局安装express报错:Error: EACCES, mkdir '/usr/lib/node_modules/express'的解决办法