動態規劃:機器人路徑數
阿新 • • 發佈:2021-02-14
【問題描述】
一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為“Start” )。機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“Finish”)。問總共有多少條不同的路徑?
【動態規劃問題分析思路】
此問題是“計數型”問題,適用於利用動態規劃方法解決。步驟如下:
1.確定狀態
■ 研究最優策略的最後一步
■ 化為子問題
■ 注意:狀態在動態規劃中的作用屬於定海神針
2.狀態轉移方程
■ 根據子問題定義直接得到
3.初始條件和邊界情況
■ 細心,考慮周全
■ 注意:不能通過狀態轉移方程計算出的值設為初始條件
4.計算順序
■ 原則是利用之前的計算結果。故可依據狀態轉移方程確定計算順序。
上述分析思路詳見:https://www.bilibili.com/video/BV1xb411e7ww
【演算法程式碼】
#include <bits/stdc++.h> using namespace std; int f[101][101]; int main() { int m,n; cin>>m>>n; f[0][0]=1; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(i==0 || j==0) f[i][j]=1; else f[i][j]=f[i-1][j]+f[i][j-1]; } } cout<<f[m-1][n-1]<<endl; return 0; } /* LeetCode 62: Unique Paths in:3 2 out:3 in:7 3 out:28 */
【參考文獻】
https://www.cnblogs.com/grandyang/p/4353555.html
https://www.bilibili.com/video/BV1xb411e7ww