dfs-网格中的路径问题

本文探讨了机器人在网格中的路径问题,包括从左上角到右下角的最短路径寻找,以及机器人在受限制的行坐标和列坐标的数位和条件下能到达的格子数量。通过递归和剪枝策略分析解决方案,分析了不同场景下的路径搜索策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值