1. 程式人生 > 其它 >動態規劃之路徑問題

動態規劃之路徑問題

一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為 “Start” )。

機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為 “Finish” )。

問總共有多少條不同的路徑?

[https://assets.leetcode.com/uploads/2018/10/22/robot_maze.png](https://assets.leetcode.com/uploads/2018/10/22/robot_maze.png- [ ]

)

/*https://leetcode-cn.com/leetbook/read/path-problems-in-dynamic-programming/rtd7d2/*/
//遞迴式
#include<bits/stdc++.h>
using namespace std;
int Dp(int n,int m){
    if(n==1||m==1)
        return 1;
    return Dp(n-1,m)+Dp(n,m-1);
}
int main(){
    int n,m;
    cin>>n>>m;
        cout<<Dp(n,m);

}
//非遞迴
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    cin >> n>>m;
    int a[n][m];
    a[0][0]=1;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(i>0&&j>0)
                a[i][j]=a[i-1][j]+a[i][j-1];//一個表示向下走一個表示向右走
             else if(i>0)
                 a[i][j]=a[i-1][j];
             else if(j>0)
                a[i][j]=a[i][j-1];
        }
    }
    cout<<a[n-1][m-1];
}

```
總思想都是對於一條路走到黑,
先向下走,向左走