從左上角走到右下角,只能往下或往右,遇到 # 不能走。這段程式用「站在每一格問兩個小問題」的方式,把路徑數一條一條加起來。
#
i
j
站在任何一格,往終點的路只有兩種開頭:第一步往下或第一步往右。所以這一格的路徑數 = 下面那格的路徑數 + 右邊那格的路徑數。這就是遞迴——同一個問題,換一格再問一次。
10**9 + 7
def count_paths(i, j): ① if i >= H or j >= W: return 0 ② if grid[i][j] == '#': return 0 ③ if i == H - 1 and j == W - 1: return 1 ④ return (count_paths(i + 1, j) + count_paths(i, j + 1)) % MOD
count(2,2)