def path_types_obstacle(path):
if path is None:
return
m, n = len(path), len(path[0])
dp = [[0 for _ in range(n)] for _ in range(m)]
if path[0][0] == 0:
dp[0][0] = 1
else:
return 0
for i in range(1, m):
if path[i][0] == 0:
dp[i][0] = dp[i - 1][0]
for j in range(1, n):
if path[0][j] == 0:
dp[0][j] = dp[0][j - 1]
for i in range(1, m):
for j in range(1, n):
if path[i][j] == 0:
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
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]]
root_map = [[0, 0], [1, 1], [0, 0]]
# root_map = [[0, 0, 0], [0, 1, 0], [0, 0, 0]]
# root_map = [[0, 0, 0], [0, 1, 0], [1, 0, 0]]
print('Path: ')
for item in root_map:
print(item)
print(path_types_obstacle(root_map))
print('==' * 20)
if __name__ == "__main__":
main()
声明:题目原出自<https://leetcode-cn.com/>