1. 程式人生 > 其它 >動態規劃:機器人路徑數

動態規劃:機器人路徑數

技術標籤:資訊學競賽動態規劃

【問題描述】
一個機器人位於一個 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