python实现动态规划求解给定矩阵的和最大的子数组(矩阵中数字正负均存在)

    本篇博文比较简单没有太多实际意义,只是为了练习一下,动态规划我并不熟悉,也是刚处于学习的阶段,这一篇博文是对上一篇博文的java代码转换成python,练习使用。

问题:

   给定一个指定的矩阵,维数小于1000,在矩阵的所有子数组中寻找具有最大和的子数组求和输出

思路:

    典型的动态规划问题

下面是具体的实现:

#!usr/bin/env python
#encoding:utf-8'''
__Author__:沂水寒城
功能:python动态规划求解矩阵中子列表最大和
'''def main_func():''''''rows=int(raw_input())cols=int(raw_input())matrix=[]num_list=[]for i in range(rows):matrix.append(['*']*cols)for i in range(rows):for j in range(cols):matrix[i][j]=int(raw_input())num_list+=matrix[i]dp=['*']*(rows*cols)dp[0]=num_list[0]for i in range(1,rows*cols):dp[i]=max(dp[i-1]+num_list[i],dp[i-1])print dpprint 'matrix中子数组最大和为:', dp[-1]if __name__ == '__main__':main_func()

结果如下: