1. 机器人的路径
有个机器人坐在一个网格的左上角,网格 r 行 c 列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径。
分析:起始点确定(左上角),目标点确定(右下角),只能向下或向右移动,只需求其中一条路径。即满足条件就可返回。
class Solution {
public:
vector<vector<int>> pathWithObstacles(vector<vector<int>>& obstacleGrid) {
vector<vector<int>> path;
if(dfs(obstacleGrid, 0, 0, path))
return path;
return {};
}
bool dfs(vector<vector<int>>& obstacleGrid, int x, int y, vector<vector<int>>& path){
int r=obstacleGrid.size();
int c=obstacleGrid[0].size();
//递归终止条件
if(x<0 || x>=r || y<0 || y>=c || obstacleGrid[x][y]==1){
return false;
}
obstacleGrid[