题目大致为:
有一个m*n矩阵,每个矩阵元素有一个对应的值,从矩阵左上角到右下角怎么样距离最大(只能向右或向下移动,一次只可移动一步)?
这是一个典型的动态规划问题,因为问题可拆分为最优子问题。而每个子问题又可以拆分,各个子问题之间不是完全独立,会包含公共的子问题。
python简单实现如下:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
a = [[1,4,5],[2,3,7],[6,9,10]]
m = n = 3
sum_list = [[],[],[]]
for i in range(m):
for j in range(n):
if i==0 and j==0:
sum = a[i][j]
sum_list[i].append(sum)
elif i==0:
sum = a[i][j] + sum_list[i][j-1]
sum_li