[LeetCode]-Unique Paths 矩阵中求两点间所有路线条数
2014-08-13 16:35
323 查看
Unique Paths
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below).
How many possible unique paths are there?
Above is a 3 x 7 grid. How many possible unique paths are there?
方法1:直接采用递归的方式。小集合可以通过,不能通过大集合。
class Solution { public: int uniquePaths(int m, int n) { int paths=0; compute(m,n,0,0,paths); return paths; } void compute(int m,int n,int i,int j,int &paths){ if(i==m-1 && j==n-1){ paths++; return; } if(i>=m || j>=n)return; compute(m,n,i+1,j,paths); compute(m,n,i,j+1,paths); } };
方法二:采用动态规划的方式。自底向上的解决问题。
设状态f[i][j] 表示(0,0)到( i , j )的路线条数。状态转移方程:f[i][j]=f[i-1][j]+ f[i][j-1]
class Solution { public: int uniquePaths(int m, int n) { vector<vector<int>> f(m,vector<int>(n,0)); for(int i=0;i<m;i++) f[i][0]=1; for(int i=0;i<n;i++) f[0][i]=1; for(int i=1;i<m;i++) for(int j=1;j<n;j++) f[i][j]=f[i-1][j]+f[i][j-1]; return f[m-1][n-1]; } };但是花费了较大开销,可以使用滚动数组的方式节省空间开销。
方法三:动态规划+滚动数组
class Solution { public: int uniquePaths(int m, int n) { vector<int> f(n,0); f[0]=1; for(int i=0;i<m;i++) for(int j=1;j<n;j++) //左边的f[j],表示是本轮i,则为f[i][j] //f[j],表示是上一轮i-1,则代表f[i-1][j] //f[j-1],表示是本轮i,则代表f[j-1][j] f[j]=f[j-1]+f[j]; return f[n-1]; } };
相关文章推荐
- [LeetCode]-Unique PathsII 有障碍的矩阵中求两点间所有路线条数
- Unique Paths II 求在矩阵里从左上走到右下的总方法数(有障碍)@LeetCode
- Unique Paths 求在矩阵里从左上走到右下的总方法数@LeetCode
- 【题解】【矩阵】【回溯】【Leetcode】Unique Paths II
- leetcode试题之求矩阵的路线条数
- [leetcode]Unique Paths II
- LeetCode_Unique Paths II
- [LeetCode]Unique Paths I & II
- LeetCode: Unique Paths II
- leetcode 9: Unique Paths
- LeetCode题解:Unique Paths II
- [leetcode] Unique Paths II
- LeetCode : Unique Paths II
- Unique Paths II [LeetCode]
- LeetCode:Unique Paths II
- LeetCode 63: Unique Paths II
- [LeetCode] Unique Paths、Unique Paths II、Minimum Path Sum
- [LeetCode] Unique Paths II
- [Leetcode] Unique Paths II
- [leetcode]Unique Paths II