class Solution:
def differentpaths(self, ob):
'''确定变量的大小'''
x=len(ob)
y=len(ob[0])
if ob[x-1][y-1]==1 or ob[0][0]==1:#遇到障碍时,将ob保证为0
return 0
dp=[[0]*y for _ in range(x)]#定义数组,将各个元素初始变为零
'''初始化数组:默认从Start开始走'''
for i in range(x):
if ob[i][0]==0:
dp[i][0]=1
else:
break
for j in range(y):
if ob[0][j]==0:
dp[0][j]=1
else:
break
'''确定遍历范围,保证每一个空格数都可以算得到'''
for i in range(1,x):
for j in range(1,y):
if ob[i][j]==1:
continue
dp[i][j]=dp[i][j-1]+dp[i-1][j]#递推公式
return dp[x-1][y-1]#返回路径数
#测试
r=Solution()
print(r.differentpaths([[0,0,0],[0,1,0],[0,0,0]]))