1.1我的解法
我写成了一个遍历图的所有的算法,写成了遍历图所需的所有步数
以及
1)审题有误:误将坐标和看成两数相加,应该是每个位置上的数字都相加
1.2其他的解法

class Solution {public:// 坐标求和int getSum(int num) {int sum = 0;while (num != 0) {// 和加上个位上的值sum += num % 10;// 去掉个位数的值num /= 10;}return sum;}int dfs(int m, int n, int k, int row, int col, vector<vector<bool> >& visited) {// 获取当前搜索位置坐标的和int sum = getSum(row) + getSum(col);// 若搜索位置超过了边界、坐标和大于设定值、当前位置已经搜索// 直接跳出,返回0if (row >= m || col >= n || sum > k || visited[row][col]) return 0;// 将当前位置标记为已搜索visited[row][col] = true;// 递归进行dfs// 先向下搜索完一列,再向右搜索完一行return 1 + dfs(m, n, k, row + 1, col, visited) + dfs(m, n, k, row, col + 1, visited);}int movingCount(int m, int n, int k) {// k等于0,只有左上角位置满足要求if (k == 0) return 1;// visited标记当前位置是否已经被搜索过// 搜索过为true,没有则为falsevector<vector<bool> > visited(m, vector<bool>(n, false));// 从左上角开始进行dfsreturn dfs(m, n, k, 0, 0, visited);}
};作者:RyanWangllng
链接:https://leetcode-cn.com/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/solution/zhu-shi-xing-ti-jie-shen-du-you-xian-sou-lokj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

这道题我一直做的不好的地方有:
1)dfs的剪枝条件考虑的不全面,走到不符合条件规范的格子就应该返回了。不符合条件规范的格子有:越界,格子对应的数字>k
2)对于visit的使用是防止重复走
3)题目中四个方向都有涉及到,但是实现的时候只向两个方向走,为什么?
是因为数字的特性吗?

dfs遍历图要思考的问题有
1)有几个入口点?
如果有多个入口点,且每一次单独的遍历都可以重复的走到原来的格子,只是在这次遍历当中不能够重复,可以采用进入下一层的时候设置,返回上一级的时候更改。
如果只有一个入口点,只有依次遍历那就不需要重设

2021-06-25☞剑指offer13.机器人的运动范围相关推荐

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

    方法 将问题看作一个树的遍历筛选问题,起始位置为[0,0],可选路径向左,向下遍历 ,通过条件坐标的数位和小于<k. 通过类似中序遍历,来遍历所有可能的坐标点,通过条件限定遍历节点 // 判断当 ...

  2. 剑指Offer13_机器人的运动范围

    public class 剑指Offer_13_机器人的运动范围 {private int m;private int n;private int k;private int count;privat ...

  3. 剑指offer.机器人的运动范围

    地上有一个 m 行和 n 列的方格,横纵坐标范围分别是 0∼m−1 和 0∼∼n−1.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格.但是不能进入行坐标和列坐标的数位 ...

  4. 【LeetCode笔记】剑指 Offer 13-. 机器人的运动范围 (Java、dfs)

    文章目录 题目描述 思路 & 代码 二刷 题目描述 注意点:满足数位和大于 k 的格子,不一定可以从 [0, 0] 走到,因此实际上不满足条件 思路 & 代码 考虑到可达性问题,决定用 ...

  5. 【四重优化,速看】剑指 Offer 13. 机器人的运动范围

    立志用最少的代码做最高效的表达 题目 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] .一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左.右.上.下移动一格(不 ...

  6. 剑指offer做题记录

    1. 剑指 Offer 03. 数组中重复的数字   力扣 class Solution { public:int findRepeatNumber(vector<int>& nu ...

  7. 算法题解(剑指Offer篇)

    文章目录 栈与队列(简单) *剑指 Offer 09. 用两个栈实现队列 - 12.27 剑指 Offer 30. 包含min函数的栈 - 12.27 链表(简单) *剑指 Offer 06. 从尾到 ...

  8. 《剑指Offer》Java实现版-电子科大-2021最新

    LeetCode-剑指offer-全 1.03数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几 ...

  9. 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java

    <LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...

最新文章

  1. 大数据文字游戏_基于大数据的游戏化教学系统研究.docx
  2. python中迭代器和生成器的区别
  3. Win32ASM代码基本模块
  4. MDK530编译出现ARM版本不符问题
  5. SSIS 错误代码 DTS_E_OLEDB_EXCEL_NOT_SUPPORTED 没有可用的 OLE DB 访问接口 SSIS 的 64 位版本中不支持 Excel 连接管理器...
  6. 【高并发】JUC中的Executor框架详解2
  7. C/c++ http请求
  8. mciSendCommand对本地音乐的播放
  9. html调整浏览器兼容性,浏览器兼容性问题整理
  10. 网络配置实训(思科)
  11. IOS人脸识别开发入门教程--人脸检测篇
  12. ubuntu WeChat 网易云音乐 Mac OS主题 wps 截图链接版
  13. 数字化转型|利用现代技术和通信手段|改变企业为客户创造价值的方式
  14. Java实现 N的阶乘
  15. 木木早教机器人说明书_智能机器人软件使用说明书
  16. 【人物志】美团前端通道主席洪磊:一位产品出身、爱焊电路板的工程师 1
  17. java氧气版,氧气呼吸器属于( )。
  18. js jquery新窗口打开的几种方式
  19. 尹春鹏-Cocos游戏的自动化测试和崩溃分析
  20. kubeadm init 问题和解决问题记录

热门文章

  1. Map集合保存数据库
  2. Java日期中YYYY与yyyy的区别
  3. batch-size选取
  4. 苹果手机用什么软件测试续航,苹果手机电池续航怎么样?7款iPhone续航测试
  5. 软件测试周刊(第83期):当你感觉忙得没时间休息,就是你最需要找时间休息的时候。 ​​​
  6. Qt-OpenCV学习笔记--图像的膨胀--dilate()
  7. 使用ROS MoveIt!控制真实五自由度机械臂
  8. C++实现机房预约系统
  9. python-numba库
  10. detectron2系列:安装