def plan_path_min(path):
if path is None:
return
m, n = len(path), len(path[0])
dp = [[0 for _ in range(n)] for _ in range(m)]
dp[0][0] = path[0][0]
for i in range(1, m):
dp[i][0] = dp[i - 1][0] + path[i][0]
for j in range(1, n):
dp[0][j] = dp[0][j - 1] + path[0][j]
for i in range(1, m):
for j in range(1, n):
dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + path[i][j]
print('\n DP: ')
for i in dp:
print(i)
print('\n Result: ')
# print(dp[-1][-1])
return dp[-1][-1]
def main():
root_map = [[1, 2, 5], [3, 2, 1]]
# root_map = [[1, 3, 1], [1, 5, 1], [4, 2, 1]]
# root_map = [[1, 3, 5, 9], [8, 1, 3, 4], [5, 0, 6, 1], [8, 8, 4, 0]]
print(' Path: ')
for item in root_map:
print(item)
print(plan_path_min(root_map))
print('==' * 20)
if __name__ == "__main__":
main()
声明:题目原出自<https://leetcode-cn.com/>