懵懂的菜鸟

Stay hungry,Stay foolish.

导航

python 求最大子序列

 动态规划的本质,是对问题状态的定义状态转移方程的定义
dynamic programming is a method for solving a complex problem by breaking it down into a collection of simpler subproblems.

动态规划是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。

 1 #coding = utf-8
 2 
 3 '''
 4 此题就是一个动态规划题,
 5 在到每一个位置的时候,标记一个局部最大L值,代表以当前位置为结尾的最大子串,
 6 当我遍历到第i个,那么以第i个为结尾的最大子串就是我们要求的L。
 7 而最终要求的全局最大值记为M,它肯定出自局部最大值L。
 8 解题思路:
 9 以位置1为结尾的最大子串;
10 以位置2为结尾的最大子串;
11 依次类推
12 '''
13 import sys
14 def MaxString(nums):
15     L=M=-float('inf')
16     for n in nums:
17         L = max(n, L + n)
18         M = max(L, M)
19     return M
20 
21 if __name__=='__main__':
22     a=[int(i) for i in sys.stdin.readline().split(' ')]
23     print(MaxString(a))

 

posted on 2017-08-26 16:22  懵懂的菜鸟  阅读(614)  评论(0编辑  收藏  举报