这个题用组合数学的方法非常简单,我还见过更难一点的,但既然说了要用动态规划,就用动态规划吧
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]
本文通过两个示例介绍如何使用动态规划方法解决网格路径问题,包括无障碍和有障碍两种情况,为读者提供易于理解的代码实现。

被折叠的 条评论
为什么被折叠?



