class Solution(object):
def __init__(self):
self.sum={}
def minPathSum(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
w=len(grid)
if w<=0:
return 0
h=len(grid[0])
if h<=0:
return 0
self.sum[(0,0)] = grid[0][0]
for i in xrange(w):
for j in xrange(h):
if (i,j) in self.sum: continue
sum = 0
if i==0 or (j>0 and self.sum[(i-1,j)]>self.sum[(i,j-1)]):
sum=self.sum[(i,j-1)]+grid[i][j]
else:
sum=self.sum[(i-1,j)]+grid[i][j]
self.sum[(i,j)] = sum
return self.sum[(w-1, h-1)]