本篇博文比较简单没有太多实际意义,只是为了练习一下,动态规划我并不熟悉,也是刚处于学习的阶段,这一篇博文是对上一篇博文的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 dp
print 'matrix中子数组最大和为:', dp[-1]
if __name__ == '__main__':
main_func()
结果如下: