UNCTF2020-crypto:wing
阿新 • • 發佈:2020-11-16
LeetCode 62 不同路徑
一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為 “Start” )。
機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為 “Finish” )。
問總共有多少條不同的路徑?
示例 1:
輸入:m = 3, n = 7
輸出:28
示例 2:
輸入:m = 3, n = 2
輸出:3
解釋:
從左上角開始,總共有 3 條路徑可以到達右下角。
1. 向右 -> 向右 -> 向下
2. 向右 -> 向下 -> 向右
3. 向下 -> 向右 -> 向右
示例 3:
輸入:m = 7, n = 3
輸出:28
示例 4:
輸入:m = 3, n = 3
輸出:6
簡單數學題,答案就是 C m + n − 2 n − 1 C_{m+n-2}^{n-1} Cm+n−2n−1,也比較好想,從上走到下有 m − 1 m-1 m−1 步,從左走到右有 n − 1 n-1 n−1 步,所以相當於只要從 m + n − 2 m+n-2 m+n−2 裡面挑 m − 1 m-1 m−1 步或 n − 1 n-1 n−1 步即可,C會爆 longlong,建議用 py,AC程式碼如下:
class Solution:
def uniquePaths (self, m: int, n: int) -> int:
x=m+n-2
y=m-1
ans=1
for i in range(x-y+1,x+1):
ans*=i
for i in range(1,y+1):
ans//=i
return ans