这个题用组合数学的方法非常简单,我还见过更难一点的,但既然说了要用动态规划,就用动态规划吧
path1
class Solution(object):
def uniquePaths(self, m, n):
path=[]
for i in range(0,m):
l=[]
l.append(1)
path.append(l)
for i in range(m):
for j in range(1,n):
sum=0
if i==0:
sum=path[i][j-1]
else:
sum=path[i-1][j]+path[i][j-1]
path[i].append(sum)
return path[m-1][n-1]
path2
class Solution(object):
def uniquePathsWithObstacles(self, obstacleGrid):
m=len(obstacleGrid)
n=len(obstacleGrid[0])
path=[]
f=1
for i in range(0,m):
l=[]
if(obstacleGrid[i][0]==1):
f=0
l.append(f)
path.append(l)
for i in range(m):
for j in range(1,n):
sum=0
if obstacleGrid[i][j]==1:
sum=0
else:
if i==0 and j==0:
sum=1
else:
if i==0:
sum=path[i][j-1]
else:
if j==0:
sum=path[i-1][j]
else:
sum=path[i-1][j]+path[i][j-1]
path[i].append(sum)
return path[m-1][n-1]