面试题13. 机器人的运动范围(java+python)

2023-11-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 {
    int m,n,k;
    public int movingCount(int m, int n, int k) {
        this.m=m;
        this.n=n;
        this.k=k;
        boolean[][] arrive = new boolean[m][n];
        return dfs(0,0,0,arrive);
    }
    public int dfs(int i,int j,int s,boolean[][] a){
        if(i==m||j==n||s>k||a[i][j]) return 0;
        a[i][j]=true;
        return 1+dfs(i+1,j,sum(i+1,j),a)+dfs(i,j+1,sum(i,j+1),a);
    }
    public int sum(int x,int y){
        int ans=0;
        while(x!=0){
            ans+=x%10;
            x/=10;
        }
        while(y!=0){
            ans+=y%10;
            y/=10;
        }
        return ans;
    }
}

python

class Solution(object):
    def movingCount(self, m, n, k):
        """
        :type m: int
        :type n: int
        :type k: int
        :rtype: int
        """
        arr = set([(0, 0)])
        for i in range(m):
            for j in range(n):
                if ((i - 1, j) in arr or (i, j - 1) in arr) and sum(i,j) <= k:
                    arr.add((i, j))
        return len(arr)
def sum(x,y):
    ans = 0
    while x:
        ans += x % 10
        x /= 10
    while y:
        ans += y % 10
        y /= 10
    return ans
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试题13. 机器人的运动范围(java+python) 的相关文章

  • Log4j2源码分析系列:(一)配置加载

    在实际开发项目中 日志永远是一个绕不开的话题 本系列文章试图以slf4j和log4j2日志体系为例 从源码角度分析日志工作原理 学习日志框架 首先要熟悉各类日志框架 这里推荐两篇文章 就不再赘述了 https www cnblogs com
  • C——选择结构

    选择结构 1 关系运算与逻辑运算 1 1 关系运算 1 2 逻辑运算 2 if语句 2 1 单分支的if语句 2 2 双分支的if语句 3 条件运算符 4 switch语句 1 关系运算与逻辑运算 C语言中的逻辑值 C语言将 非0 值当做值

随机推荐

  • buuCTF [ISITDTU 2019]EasyPHP 1

    buuCTF ISITDTU 2019 EasyPHP 1 直接代码审计 第一个if 过preg match 一般有三种方法 取反绕过 异或绕过 转义绕过 这里用取反绕过 第二个if的意思是输入的字符串不重复的字符长度不超过0xd即13 如
  • select 模型解释

    套接字模式 阻塞套接字和非阻塞套接字 或者叫同步套接字和异步套接字 套接字模型 描述如何对套接字的I O行为进行管理 Winsock提供的I O模型一共有五种 select WSAAsyncSelect WSAEventSelect Ove
  • mybatis plus分页total=0、不计算总数的终极解决方案!!!

    当你在加入分页配置 如下 Configuration public class MybatisPlusConfig mybatis plus分页插件 Bean public PaginationInterceptor paginationI
  • 爬虫字体反爬的解决(一)

    爬虫字体反爬的解决 一 学习了前边的爬虫知识 大家一定爬取过很多的网站了 也一定被很多网站的各式各样的反爬机制劝退过 那么这些反爬机制如何来破解 大家也一定想破了头 本节课 我们来搞点不同寻常的有深度的事情 破解字体反爬 大家看目录 发现我
  • 【待解决】[LeetCode-101]-Symmetric Tree(判断两颗二叉树是否对称)

    文章目录 0 题目相关 1 Solution 0 题目相关 题目解读 给定两颗二叉树 对这两颗二叉树进行比较 判断这两棵二叉树是否对称 原题描述 原题链接 Given a binary tree check whether it is a
  • LeetCode题——最长无重复子串

    题目 给定一个字符串 请你找出其中不含有重复字符的 最长子串 的长度 如 输入 abcbabcd 输出 4 解释 因为无重复字符的最长子串是 abcd 所以其长度为 4 思路 一开始容易往暴力遍历的方向想 但是实际上运用窗口的思想就很容易解
  • [Unity2D/3D]实用的血条制作(第二期)

    Unity2D 3D 实用的血条制作 第二期 前言 第一期我为大家介绍了一种我自己摸索出来的血条制作方法 不是很常规 在这里我为大家介绍一种比较常用的血条制作方法 利用Mask组件来制作 让我们一起来看看叭 效果如图 1 首先我们把制作血条
  • Linux网络:数据链路层

    文章目录 数据链路层 和 网络层 认识以太网 以太网帧格式 认识MAC地址 认识MTU MTU对IP UDP TCP协议的影响 ARP协议 ARP数据报的格式 DNS Domain Name System 简介 域名简介 ICMP协议 pi
  • 【Linux】文件权限

    权限分为 r 读 w 写 x 执行 文件可以属于某个人也可以属于某个群体 由此可划分出三种 文件所有者 所属用户组 其他人 其他人指的是 既不是文件所有者且也不所属用户组中的用户 liuquan localhost ls l 总用量 0 r
  • CH8-HarmonyOS流转架构解析

    文章目录 前言 目标 核心概念 流转架构特性 Ability的调度 流转应用场景 流转架构 核心模块 跨端迁移关键流程 多端协同关键流程 分布式任务调度 连接远程PA 启动远程FA PA 迁移FA 接口IAbilityContinuatio
  • Android强大的图表开源——MPAndroidChart

    介绍 在APP开发中遇到图表的样式 一般我们要先查询GitHub上比较火的开源框架 这种图标应用广泛 统计 游戏统计 人际关系图等等 用到今天的这个框架MPAndroidChart 点击查看GitHub 一个可以拖动缩放的图表库 包含曲线图
  • 求整数的位数及各位数字之和 (15 分)

    7 5 求整数的位数及各位数字之和 15 分 对于给定的正整数N 求它的位数及其各位数字之和 输入格式 输入在一行中给出一个不超过10 9 的正整数N 输出格式 在一行中输出N的位数及其各位数字之和 中间用一个空格隔开 输入样例 321 输
  • 【Docker】Docker API的使用

    1 通过实训平台进入到操作系统界面 在 后输入vi usr lib systemd system docker service命令 进入编译模式 然后按i 小写 键 修改代码 usr bin dockerd current H tcp 0
  • 创建一维数组,长度为20,元素索引值为索引的二倍,奇数为负偶数为正,然后对数组排序

    import java util Arrays public class ArrayCreate public static void main String args int a new int 20 for int i 0 i lt 2
  • 单屏播放asf和vga文件的教学视频

    在自己的电脑上播放三分屏教学视频时 总觉得左边那两个小屏幕太占位置 还有右上方的小屏幕的播放进度条太短而无法精确拖放 虽然不是很懂HTML 但修改一下代码 还是单屏能播放的 下面是单屏播放asf和vga文件的设置 1 文件夹结构 index
  • CSS 实现七彩圆环loading动画

    前言 CSS 实现七彩圆环loading动画 速速来Get吧 1 实现效果 2 实现步骤 定义父容器宽度为 w 每个圆环之间的gap间距为 gap 圆环的border边框宽为 border root border 5px gap 30px
  • Java小练习——图书管理系统

    目录 一 图书管理系统应具备的功能 二 简单分析如何实现该系统 三 框架图 四 代码实现过程及简析 1 Book类 简析 2 BookShelf类 简析 3 IOperation接口 3 1 AddOperation类 3 2 Borrow
  • 离散事件模型

    离散事件模型通常需要用到队列和线性表 典型的例子是银行业务的模拟 本文参考的是严蔚敏的 数据结构 过程如下 用四个队列表示银行的四个窗口 用一个有序链表存储到达事件和离开事件 在初始化函数里面先初始化四个队列和一个链表 并且产生一个到达事件
  • 解决Eclipse添加新server时无法选择Tomcat7.0

    解决Eclipse添加新server时无法选择Tomcat7 0 新添加tomcat时 出现如下图情况 解决方法 这时打开工作空间目录下的 metadata plugins org eclipse core runtime settings
  • 面试题13. 机器人的运动范围(java+python)

    地上有一个m行n列的方格 从坐标 0 0 到坐标 m 1 n 1 一个机器人从坐标 0 0 的格子开始移动 它每次可以向左 右 上 下移动一格 不能移动到方格外 也不能进入行坐标和列坐标的数位之和大于k的格子 例如 当k为18时 机器人能够