题目:在一个m*n的格子中,每个位置上都有一个数字,一个机器人只会向下或向右,请计算它从左上角到达右下角的路径的数字之和的最小值。
分析:和第98题一样,逻辑没那么复杂,死记硬背都可以,仍然用递归。代码如下:
def dp(board,i,j):
if i == 0:
board[i][j] = sum(board[0][0:j+1])
return board[i][j]
if j == 0:
board[i][j] = sum(board[0:i+1][j])
return board[i][j]
else:
board[i][j] = min(dp(board,i-1,j),dp(board,i,j-1))+board[i][j]
return board[i][j]
def min_cost(board):
m,n = len(board),len(board[0])
result = dp(board,m-1,n-1)
print(result)
board = [
[1,3,1],
[2,5,2],
[3,4,1]
]
min_cost(board)