class Solution(object):
def __init__(self):
self.cnt={}
self.cnt[(0,0)]=1
def uniquePathsWithObstacles(self, obstacleGrid):
"""
:type obstacleGrid: List[List[int]]
:rtype: int
"""
w=len(obstacleGrid)
if w==0: return 0
h=len(obstacleGrid[0])
for i in xrange(len(obstacleGrid)):
for j in xrange(len(obstacleGrid[0])):
if obstacleGrid[i][j]:
self.cnt[(i,j)] = 0
continue
if (i,j) in self.cnt: continue
cnt=0
if i>0:
cnt+=self.cnt[(i-1, j)]
if j>0:
cnt+=self.cnt[(i, j-1)]
self.cnt[(i, j)]=cnt
return self.cnt[(w-1,h-1)]