動態規劃之路徑問題
阿新 • • 發佈:2022-04-06
一個機器人位於一個 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]; } ``` 總思想都是對於一條路走到黑, 先向下走,向左走