标签:代码 路径 利用 bsp 计算 blog 规划 翻译 题目
机器人位于m x n网格的左上角(在下图中标记为“开始”)。
机器人只能在任何时间点向下或向右移动。 机器人试图到达网格的右下角(在下图中标记为“完成”)。
有多少个可能的唯一路径?
上面是一个3×7的网格。 有多少个可能的唯一路径?
注意:m和n最多为100。
class Solution { public: int uniquePaths(int m, int n) { vector<vector<int>> res(m, vector<int>(n, 1));// 初始化二维数组 for (int i = 1; i<m ; i++) for (int j = 1; j<n; j++){ res[i][j] = res[i-1][j] + res[i][j-1]; } return res[m-1][n-1]; } };
唯一路径”的后续跟踪: 现在考虑如果一些障碍物添加到网格。 有多少独特的路径会有? 障碍物和空白区域在网格中分别标记为1和0。 例如, 在3x3网格的中间有一个障碍物,如下所示。 [ [0,0,0], [0,1,0], [0,0,0] ]] 唯一路径的总数为2。 注意:m和n最多为100。
class Solution { public: int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) { int row = obstacleGrid.size(); int col = obstacleGrid[0].size(); vector<vector<int> > res(row, vector<int>(col, 0)); for (int i=0; i<col; i++){//处理列 res[0][i] = 1; if (obstacleGrid[0][i] == 1){ res[0][i] = 0; break; } } for (int i=0; i<row; i++){//处理列 res[i][0] = 1; if (obstacleGrid[i][0] == 1){ res[i][0] = 0; break; } } for (int i=1; i<row; i++){ for (int j=1; j<col; j++){ res[i][j] = res[i-1][j] + res[i][j-1]; if (obstacleGrid[i][j] == 1) res[i][j] = 0; } } return res[row-1][col-1]; } };
标签:代码 路径 利用 bsp 计算 blog 规划 翻译 题目
原文地址:http://www.cnblogs.com/Kobe10/p/6357526.html