剑指 Offer 13. 机器人的运动范围

地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?

示例 1:

复制代码
输入:m = 2, n = 3, k = 1
输出:3

示例 2:

复制代码
输入:m = 3, n = 1, k = 0
输出:1

提示:

  • 1 <= n,m <= 100
  • 0 <= k <= 20
java 复制代码
class Solution {
    public int movingCount(int m, int n, int k) {
        boolean[][] visited = new boolean[m][n];
        return dfs(0, 0, m, n, k, visited);
    }

    private int dfs(int i, int j, int m, int n, int k, boolean visited[][]) {
        if (i < 0 || i >= m || j < 0 || j >= n || (i/10 + i%10 + j/10 + j%10) > k || visited[i][j]) {
            return 0;
        }
        visited[i][j] = true;
        return 1+ dfs(i + 1, j, m, n, k, visited) + dfs(i - 1, j, m, n, k, visited) + 
               dfs(i, j + 1, m, n, k, visited) + dfs(i, j - 1, m, n, k, visited);
    }
}

本题解使用到了递归,也就是递归处理机器人在上,下,左,右的行进,如果不符合条件则返回0,如果符合条件则返回1+在此格子上的又一上,下,左,右的选择。

相关推荐
maxmaxma10 小时前
ROS2 机器人 少年创客营:Day6 - colcon
机器人·ros2
maxmaxma11 小时前
ROS2 机器人 少年创客营:Day 6
机器人·ros2
码农三叔12 小时前
第三卷:《人形机器人的控制与运动规划》
人工智能·机器人·人形机器人
cici1587414 小时前
基于RT-Thread的数字焊机与工业机器人通信网关设计
arm开发·机器人
硅谷秋水15 小时前
世界链:潜运动中的世界模型思维
深度学习·计算机视觉·语言模型·机器人
不熬夜的熬润之17 小时前
KCF算法解析
人工智能·算法·计算机视觉·机器人
kyle~17 小时前
ROS2---客户端服务(rclcpp::Client)
c++·物联网·机器人·ros2
日月星辰cmc18 小时前
【开源】Groot2风格行为树可视化监控软件,能展示20个节点以上
机器人·开源软件·行为树
雪碧聊技术18 小时前
具身智能元年已至?智元机器人量产上汽产线,人形机器人不再“只会跳舞”
机器人
熵减纪元1 天前
亚马逊下场抢人形机器人了:Sprout 被收编,家庭陪伴赛道开始热起来
机器人