62/63 Unique Paths
2017-07-21 12:12
99 查看
62 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?
Note: m and n will be at most 100.
63 Unique Paths II
Follow up for “Unique Paths”:
Now consider if some obstacles are added to the grids. How many unique paths would there be?
An obstacle and empty space is marked as
For example,
There is one obstacle in the middle of a 3x3 grid as illustrated below.
The total number of unique paths is
Note: [i]m and n will be at most 100.
总结:DP、初始化条件、状态转移方程。
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?
Note: m and n will be at most 100.
class Solution { public: int uniquePaths(int m, int n) { vector<vector<int>> dp(m, vector<int>(n, 1)); //初始化dp数组为全1 for(int i = 1; i < m; ++i) { for(int j = 1; j < n; ++j) { dp[j] = dp[i][j-1] + dp[i-1][j]; //DP状态转移方程 } } return dp[m-1][n-1]; } };
63 Unique Paths II
Follow up for “Unique Paths”:
Now consider if some obstacles are added to the grids. How many unique paths would there be?
An obstacle and empty space is marked as
1and
0respectively in the grid.
For example,
There is one obstacle in the middle of a 3x3 grid as illustrated below.
[ [0,0,0], [0,1,0], [0,0,0] ]
The total number of unique paths is
2.
Note: [i]m and n will be at most 100.
class Solution { public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m = obstacleGrid.size(); //获取m,n int n = obstacleGrid[0].size(); int x,y; vector<vector<int>> dp(m, vector<int>(n, 1)); //初始化 for(int i = 0; i < m; ++i) { if(obstacleGrid[i][0] == 1) { //当边缘处出现“1”时,其后面所以格子都不可走到 for(int j = i; j < m; ++j) { dp[j][0] = 0; } break; } } for(int i = 0; i < n; ++i) { //同上进行初始化边缘 if(obstacleGrid[0][i] == 1) { for(int j = i; j < n; ++j) { dp[0][j] = 0; } break; } } for(int i = 1; i < m; ++i) { for(int j = 1; j < n; ++j) { x = obstacleGrid[i][j-1] == 1? 0 : 1; //DP状态转移方程,多加一个判断条件 y = obstacleGrid[i-1][j] == 1? 0 : 1; dp[i][j] = dp[i][j-1]*x + dp[i-1][j]*y; } } return obstacleGrid[m-1][n-1] == 1? 0 : dp[m-1][n-1]; //最后还需要查看右下角标记是否为“1” } };
总结:DP、初始化条件、状态转移方程。
相关文章推荐
- 62 63 Unique Paths l, ll
- Leetcode62-63 Unique Paths
- Leetcode_62_Unique Paths
- [LeetCode]: 62: Unique Paths
- leetcode—— 62——Unique Paths
- LeetCode - 62/63/64 - Unique Paths/Minimum Path Sum
- Leetcode62 Unique Paths
- LeetCode62——Unique Paths
- [leetcode 62]Unique Paths---机器人向左或向下走到右下角的路径数目
- 62. Unique Paths
- 第61+62+63讲 类和对象基本概念 以及其在内存中存在的形式
- leetcode(62). Unique Paths
- 2014年下半年信息系统项目管理师上午试题试题与答案 62 63
- leetcode || 62、Unique Paths
- LeetCode62——Unique Paths
- LeetCode62 Unique Paths
- LeetCode 62 Unique Paths & 63 Unique Paths II
- LeetCode 62 Unique Paths
- LeetCode 62 Unique Paths
- LeetCode解题笔记62 Unique Paths