62/63 Unique Paths
来源:互联网 发布:免费源码分享 编辑:程序博客网 时间:2024/05/29 07:43
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.
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[i][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 1
and 0
respectively 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: 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
- LeetCode 62 Unique Paths & 63 Unique Paths II
- leetcode-62&63 Unique Paths I & II
- Leetcode(62)(63) Unique Paths I II
- [Leetcode] #62#63 Unique Paths I & II
- 63Unique Paths II
- [63]Unique Paths II
- 63 leetcode - Unique Paths
- 63-Unique Paths II
- 63 Unique Paths II
- Leetcode62-63 Unique Paths
- [62]Unique Paths
- [leetcode 62] Unique Paths
- LeetCode(62): Unique Paths
- [LeetCode 62]Unique Paths
- leetcode || 62、Unique Paths
- Unique Paths - LeetCode 62
- leetcode-62 Unique Paths
- Python股票处理之七_数据库存储
- ImageProcessor 中的copyBits的说明
- 抽象数据类型
- 【Java学习笔记】使用for循环编写九九乘法表
- 鼠标手
- 62/63 Unique Paths
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?求N!的二进制表示中最低位1的位置。
- 为什么redis使用skiplist, 而不使用btrees
- Java之IO,BIO,NIO,AIO
- Vue 折腾记
- 阿里云服务器CentOS6.8安装JDK
- Laravel Excel译文——导入
- 机器学习:如何理解机器学习中的逻辑回归
- android之SQLite