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

news/2024/11/24 11:33:23/

题目: 地上有一个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

思路:

https://www.bilibili.com/video/BV1KP411L7VH?p=12&vd_source=cc3333a27046bad449a2b6818cc4149c
该题和上道题有点像,创建一个visited二维数组,初始化为false
从0,0开始递归,当i和j不满足条件是返回0,并且看visited数组判断元素是否已经访问过,访问过返回0,k用来判断是不是两个数差分相加已经超过k
对访问过的位置指定为true。

class Solution {
public:int movingsum(int m,int n,int k) {vector<vector<bool>> visited(m, vector<bool>(n,false));return dfs(0,0,visited,m,n,k);}int dfs(int i,int j, vector<vector<bool>>& visited,int m,int n,int k) {if (i < 0 || j < 0 || i >= m || j >= n || visited[i][j] || k < sum(i) + sum(j))return 0;visited[i][j] = true;return 1 + dfs(i + 1, j, visited, m, n, k) + dfs(i - 1, j, visited,m, n, k) + dfs(i, j + 1, visited, m, n, k) + dfs(i, j - 1, visited, m, n, k);}int sum(int x) {int res = 0;while (x != 0) {res = res + x % 10;x /= 10;}return res;}
};int main() {int m = 2, n = 3, k = 1;Solution ss;cout << ss.movingsum(m,n,k) << endl;return 0;
}

http://www.ppmy.cn/news/99432.html

相关文章

这么可爱的彩虹屁老婆,真的不想“娶”一个放桌面上吗?

&#x1f4a7;这么可爱的 彩虹屁老婆 \color{#FF1493}{彩虹屁老婆} 彩虹屁老婆&#xff0c;真的不想“娶”一个放桌面上吗&#xff1f;&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &…

网站的fp和fcp的区别

网站的fp和fcp的区别 FP&#xff08;First Paint&#xff09;和FCP&#xff08;First Contentful Paint&#xff09;是两个与网页性能相关的指标&#xff0c;用于衡量网页加载的速度和用户体验。它们之间的区别如下&#xff1a; First Paint&#xff08;FP&#xff09;&#…

【Linux】线程互斥 与同步

文章目录 1. 背景概念多个线程对全局变量做-- 操作 2. 证明全局变量做修改时&#xff0c;在多线程并发访问会出问题3. 锁的使用pthread_mutex_initpthread_metux_destroypthread_mutex_lock 与 pthread_mutex_unlock具体操作实现设置为全局锁 设置为局部锁 4. 互斥锁细节问题5.…

HTB-Forest(PowerView.ps1使用、嵌套组解析、了解帐户操作员组)

目录 扫描 枚举特定于域控制器的服务 AS-REP烘焙服务帐户svc-alfresco 使用Hashcat破解AS-REP哈希 作为svc-alfresco获得立足点 攻击后的枚举和权限提升 查找指向“Account Operators”组的嵌套组 使用PowerView.ps1枚举组 了解帐户操作员组 寻找有价值的ACE 在Exc…

《Reinforcement Learning: An Introduction》第2章笔记

2. Multi-armed Bandits 评估性反馈&#xff08;evaluative feedback&#xff09; 完全取决于采取的动作&#xff0c;这是强化学习采用的方式。纯粹的评估性反馈表明要执行的动作有多好&#xff0c;但是不关注它是否是可能的最好或最坏的动作。指导性反馈&#xff08;instruct…

如何在华为OD机试中获得满分?Java实现【勾股数元组】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

图及其应用

文章目录 图定义存储结构邻接矩阵邻接表 遍历深度优先搜索广度优先搜索 应用最小生成树构造最小生成树(**M**inimum **S**panning **T**ree&#xff0c;简称MST) 最短路径拓扑排序拓扑排序的方法 关键路径 图 定义 多对多的关系。 无向图&#xff1a;每条边都没有方向 有向…

你知道ChatGPT里面的G、P、T分别代表什么吗?

生成式AI&#xff0c; 在学习归纳数据分布的基础上&#xff0c;创造数据中不存在的新内容。可以生成文本、图片、代码、语音合成、视频和3D模型。 比尔盖茨&#xff1a;ChatGPT是1980年以来最具革命性的科技进步。 身处这个AI变革的时代&#xff0c;唯有躬身入局&#xff0c;…