這題比較簡單,至少能想到動態規劃和排列組合兩種方法。
明顯,到達第 i 行 j 列的點的路勁數為到達第 i-1 行 j 列的路勁數與到達 i 行 j-1 列的路勁數之和。而第一行和第一列的點只有一條路勁,即不停向右或不停向下。
由此,可以使用乙個 m*n 維的dp陣列進行動態規劃,dp[m-1][n-1]即是到達第 m 行 n 列的路勁數。
class
solution
for(vector<
int>
& v : dp)
for(
inti(1
); i < m;
++i)
}return dp[m-1]
[n-1];}};
由於每次只能向右或向下走,因此一共需要走 m+n-2 步,其中向右走 n-1 步,向下走 m-1 步。
因此,我們只需要確定向右(或向下)走的時刻,另乙個方向就自然確定了。
所以最終答案即cm+n-2
n-1。
不過在實現中可能有點坑。
class
solution
return ans;}}
;
在具體的實現中,可以將 n 選為 m , n 中較小的數,這樣可以減少計算量。
另外要注意,ans = ans * x / y 不能寫為ans *= x / y
,因為後者先計算x / y,會產生精度的損失,導致最後結果出錯。
12 9 每日一題 62 不同路徑
乙個機械人位於乙個m x n網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3的網格。有多少可能的路徑?示例 1 輸入 m 3,n 2 輸出 3 解釋 從左...
力扣62 不同路徑
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?示例 1 輸入 m 3,n 7 輸出 28 示例 2 輸入 m 3,n 2 輸出 3 解釋 從左上角...
力扣 62 不同路徑
題目 乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?示例 1 輸入 m 3,n 7 輸出 28 題解 這是個楊輝三角形,每個位置的路徑 該位置左邊...