Python实现求矩阵路径最小和,使用动态规划

题目:

给定一些NxN的矩阵,对于任意的路线,定义其【和】为其线路上所有节点的数字的和,计算从左上角到右下角的路线和最小值。每条路线只能从某一点到其周围(上下左右)的点,不可斜行。例如:
4,6
2,8
路线和最小值为 4-2-8 14
1,2,3
4,5,6
7,8,9
路线和最小值为 1-2-3-6-9 21
 
def minSum(list1):
l1=len(list1)
if l1<2:
return list1
list2=list1
for i in xrange(1,l1):
list2[0][i]=list1[0][i-1]+list1[0][i]
list2[i][0]=list1[i-1][0]+list1[i][0]
for i in xrange(1,l1):
for j in xrange(1,l1):
sum1=list2[i][j-1]+list1[i][j]
sum2=list2[i-1][j]+list1[i][j]
if sum1<sum2:
list2[i][j]=sum1
else:
list2[i][j]=sum2
return list2[l1-1][l1-1]
posted @ 2017-06-22 18:24  emily-qin  Views(3209)  Comments(0Edit  收藏  举报