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

来源:互联网 发布:莉莉柯林斯长相知乎 编辑:程序博客网 时间:2024/05/21 14:03

    本篇博文比较简单没有太多实际意义,只是为了练习一下,动态规划我并不熟悉,也是刚处于学习的阶段,这一篇博文是对上一篇博文的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()

结果如下:



阅读全文
1 0
原创粉丝点击