题目描述

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

判断当前结点是否存在或者是否被访问过,没访问过就判断他是否合法(数位和大于k),合法的格子标记已访问,并递归其左右上下。

 public class Solution {//回溯 dfs my
public int movingCount(int threshold, int rows, int cols)
{
boolean[][] isVisit = new boolean[rows][cols];
dfs(threshold,0,0,isVisit);
int re =0;
for(int i=0;i<rows;i++){
for(int j=0;j<cols;j++){
if(isVisit[i][j]){
re++;
}
}
}
return re;
}
public void dfs(int t,int x,int y,boolean[][] isVisit){
if(x<0||y<0||x>=isVisit.length||y>=isVisit[0].length||isVisit[x][y]){
return ;
}
int sum =0;
int i=x;
int j =y;
while(i!=0){
sum+=i%10;
i/=10;
}
while(j!=0){
sum+=j%10;
j/=10;
}
if(sum>t){
return ;
}
isVisit[x][y] = true;
dfs(t,x+1,y,isVisit);
dfs(t,x-1,y,isVisit);
dfs(t,x,y+1,isVisit);
dfs(t,x,y-1,isVisit);
}
}

剑指offer-机器人的运动范围的更多相关文章

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

    题目描述: 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. 例如,当k为18时,机器人 ...

  2. 剑指offer--48.机器人的运动范围

    这道题不是要求走一趟最多走多少,而是最多走多少,WA几次才想通. ------------------------------------------------------------------- ...

  3. 剑指offer——2

    剑指offer 机器人的运动范围 数组的应用和递归 package com.wang.test; public class Myso { /** * 题目描述 * 地上有一个m行和n列的方格.一个机器 ...

  4. 【Java】 剑指offer(12) 机器人的运动范围

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 地上有一个m行n列的方格.一个机器人从坐标(0, 0)的格子开始移 ...

  5. 剑指 Offer 13. 机器人的运动范围 + 深搜 + 递归

    剑指 Offer 13. 机器人的运动范围 题目链接 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2020/12/ ...

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

    剑指 Offer 13. 机器人的运动范围 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] .一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左.右.上.下移动一 ...

  7. 机器人的运动范围 牛客网 剑指Offer

    机器人的运动范围 牛客网 剑指Offer 题目描述 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大 ...

  8. Go语言实现:【剑指offer】机器人的运动范围

    该题目来源于牛客网<剑指offer>专题. 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之 ...

  9. 剑指offer

    今天完成了剑指offer上的66道编程题,感觉自己还是很多代码实现能力和算法积累都还不够!还需要继续联系,坚持自己独立写代码实现. 最后将今天的两道题目奉上,都有异曲同工之妙: 矩阵中的路径: #in ...

  10. 【剑指Offer学习】【全部面试题汇总】

    剑指Offer学习 剑指Offer这本书已经学习完了.从中也学习到了不少的东西,如今做一个总的文件夹.供自已和大家一起參考.学如逆水行舟.不进则退.仅仅有不断地学习才干跟上时候.跟得上技术的潮流! 全 ...

随机推荐

  1. Java——super 与 this 关键字

    super 与 this 关键字 super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类. this关键字:指向自己的引用. package ti; public ...

  2. pl/sql学习(5): 触发器trigger/事务和锁

    (一)触发器简单介绍 触发器是由数据库的特定时间来触发的, 特定事件主要包括以下几种类型: (1)DML: insert, update,delete 增删改 (2)DDL: create, alte ...

  3. 一 .isinstance(obj,cls)和issubclass(sub,super)

    class Foo: pass class Bar(Foo): pass obj = Bar() isinstance(obj,cls)检查是否obj是否是类 cls 的对象 print(isinst ...

  4. Linux 包管理

    1 文集 <Linux 包管理基础:apt.yum.dnf 和 pkg>,由Snapcrafter翻译,英文原创(作者Brennen)地址在这里. 这是一篇不错的概括性的文章,系统介绍了D ...

  5. freemaker 操作字符串

    来源于博客:https://blog.csdn.net/qq_35624642/article/details/72926769 Freemarker操作字符串 1.substring(start,e ...

  6. Mysql 学习笔记02

    14 mysql 的常见函数 数学函数 1 abs() 函数 ,返回绝对值 2 bin() 函数 ,返回数值的二进制数值 3 hex()函数 ,返回数值的十六进制的值 4  floor()函数 ,对小 ...

  7. leetcode算法题整理

    一.线性表,如数组,单链表,双向链表 线性表.数组 U1.有序数组去重,返回新数组长度 A = [1,1,2] -> [1,2] 返回2   分析:其实一般数组的问题都可以用两个指针解决,一个指 ...

  8. npm的一些常用命令(在国内,建议使用cnpm,在淘宝镜像里面下载就行)

    npm的一些常用命令(在国内,npm操作可能会比较慢,建议使用cnpm,在淘宝镜像里面下载就行,用法和npm一样) cnpm安装地址,直接安装 npm install cnpm -g --regist ...

  9. BigDecimal 准确的 double , float 计算

    public class ArithUtil { private static final int DEF_DIV_SCALE = 10; private ArithUtil() { } /** * ...

  10. 使用CSS选择器实现选择指定子节点

    HTML CSS 具体效果 其他事例 事例图片来自MDN:https://developer.mozilla.org/zh-CN/docs/Web/CSS/:nth-child