2021-06-25☞剑指offer13.机器人的运动范围
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.机器人的运动范围相关推荐
- 剑指offer13. 机器人的运动范围
方法 将问题看作一个树的遍历筛选问题,起始位置为[0,0],可选路径向左,向下遍历 ,通过条件坐标的数位和小于<k. 通过类似中序遍历,来遍历所有可能的坐标点,通过条件限定遍历节点 // 判断当 ...
- 剑指Offer13_机器人的运动范围
public class 剑指Offer_13_机器人的运动范围 {private int m;private int n;private int k;private int count;privat ...
- 剑指offer.机器人的运动范围
地上有一个 m 行和 n 列的方格,横纵坐标范围分别是 0∼m−1 和 0∼∼n−1.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格.但是不能进入行坐标和列坐标的数位 ...
- 【LeetCode笔记】剑指 Offer 13-. 机器人的运动范围 (Java、dfs)
文章目录 题目描述 思路 & 代码 二刷 题目描述 注意点:满足数位和大于 k 的格子,不一定可以从 [0, 0] 走到,因此实际上不满足条件 思路 & 代码 考虑到可达性问题,决定用 ...
- 【四重优化,速看】剑指 Offer 13. 机器人的运动范围
立志用最少的代码做最高效的表达 题目 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] .一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左.右.上.下移动一格(不 ...
- 剑指offer做题记录
1. 剑指 Offer 03. 数组中重复的数字 力扣 class Solution { public:int findRepeatNumber(vector<int>& nu ...
- 算法题解(剑指Offer篇)
文章目录 栈与队列(简单) *剑指 Offer 09. 用两个栈实现队列 - 12.27 剑指 Offer 30. 包含min函数的栈 - 12.27 链表(简单) *剑指 Offer 06. 从尾到 ...
- 《剑指Offer》Java实现版-电子科大-2021最新
LeetCode-剑指offer-全 1.03数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几 ...
- 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java
<LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...
最新文章
- 大数据文字游戏_基于大数据的游戏化教学系统研究.docx
- python中迭代器和生成器的区别
- Win32ASM代码基本模块
- MDK530编译出现ARM版本不符问题
- SSIS 错误代码 DTS_E_OLEDB_EXCEL_NOT_SUPPORTED 没有可用的 OLE DB 访问接口 SSIS 的 64 位版本中不支持 Excel 连接管理器...
- 【高并发】JUC中的Executor框架详解2
- C/c++ http请求
- mciSendCommand对本地音乐的播放
- html调整浏览器兼容性,浏览器兼容性问题整理
- 网络配置实训(思科)
- IOS人脸识别开发入门教程--人脸检测篇
- ubuntu WeChat 网易云音乐 Mac OS主题 wps 截图链接版
- 数字化转型|利用现代技术和通信手段|改变企业为客户创造价值的方式
- Java实现 N的阶乘
- 木木早教机器人说明书_智能机器人软件使用说明书
- 【人物志】美团前端通道主席洪磊:一位产品出身、爱焊电路板的工程师 1
- java氧气版,氧气呼吸器属于( )。
- js jquery新窗口打开的几种方式
- 尹春鹏-Cocos游戏的自动化测试和崩溃分析
- kubeadm init 问题和解决问题记录
热门文章
- Map集合保存数据库
- Java日期中YYYY与yyyy的区别
- batch-size选取
- 苹果手机用什么软件测试续航,苹果手机电池续航怎么样?7款iPhone续航测试
- 软件测试周刊(第83期):当你感觉忙得没时间休息,就是你最需要找时间休息的时候。 ​​​
- Qt-OpenCV学习笔记--图像的膨胀--dilate()
- 使用ROS MoveIt!控制真实五自由度机械臂
- C++实现机房预约系统
- python-numba库
- detectron2系列:安装