AcWing 24:机器人的运动范围 ← BFS、DFS
【题目来源】
https://www.acwing.com/problem/content/description/22/【题目描述】
地上有一个 m 行和 n 列的方格,横纵坐标范围分别是 0∼m−1 和 0∼n−1。
一个机器人从坐标 (0,0) 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格。
但是不能进入行坐标和列坐标的数位之和大于 k 的格子。
请依次输入k,m,n,问该机器人能够达到多少个格子?注意:0<=m<=50,0<=n<=50,0<=k<=100【算法分析】https://blog.csdn.net/hnjzsyjyj/article/details/125801217◆DFS算法模板:
void dfs(int step){判断边界{输出解 }尝试每一种可能{满足check条件{标记继续下一步:dfs(step+1)恢复初始状态(回溯的时候要用到)}}
}
https://blog.csdn.net/hnjzsyjyj/article/details/118736059◆BFS算法模板:
助记:建-入-量:头-出-入”。其中,“建-入-量:头-出-入”各字的解析如下:
建:建队
入:入队
量:队中元素个数。作为while循环的条件。
头:队头
出:出队
入:入队
一个记忆场景,“小猫咪在建好的洞口,想入洞。先用胡子量过洞口大小后,然后用头出入洞”。

【算法代码:DFS】
#include <bits/stdc++.h>
using namespace std;const int maxn=105;
int flag[maxn][maxn];
int sum=0;int dfs(int x,int y,int k,int m,int n) {if(flag[x][y]==1 || x>=m || y>=n || (x/10+x%10+y/10+y%10)>k) return 0;flag[x][y]=1;sum=dfs(x+1,y,k,m,n)+dfs(x,y+1,k,m,n)+1;return sum;
}int movingCount(int k,int m,int n){for(int i=0;i<m;i++){for(int j=0;j<n;j++){flag[i][j]=0;}}return dfs(0,0,k,m,n);
}int main(){int k,m,n;cin>>k>>m>>n;cout<<movingCount(k,m,n)<<endl;return 0;
}/*
in:5 0 0
out:0in:7 4 5
out:20in:18 40 40
out:1484
*/
【算法代码:BFS】
#include <bits/stdc++.h>
using namespace std;const int maxn=105;
int flag[maxn][maxn];
int sum=0;int movingCount(int k,int m,int n) {if(m==0 || n==0) return 0; //very importantfor(int i=0; i<m; i++) {for(int j=0; j<n; j++) {flag[i][j]=0;}}queue<pair<int,int>> q;q.push({0,0});flag[0][0]=1;int dx[]= {0,0,-1,1};int dy[]= {-1,1,0,0};while(!q.empty()) {auto t=q.front(); //pair<int,int> t=q.front();q.pop();int x=t.first;int y=t.second;sum++;for(int i=0; i<4; i++) {int nx=x+dx[i];int ny=y+dy[i];if(nx<0 || ny<0) continue;if(flag[nx][ny]==1 || nx>=m || ny>=n || (nx/10+nx%10+ny/10+ny%10)>k) continue;q.push({nx,ny});flag[nx][ny]=1;}}return sum;
}int main() {int k,m,n;cin>>k>>m>>n;cout<<movingCount(k,m,n)<<endl;return 0;
}/*
in:5 0 0
out:0in:7 4 5
out:20in:18 40 40
out:1484
*/
【参考文献】
https://blog.csdn.net/qq_40184885/article/details/89483505
https://www.cnblogs.com/wzw0625/p/12731031.html
相关文章:
AcWing 24:机器人的运动范围 ← BFS、DFS
【题目来源】https://www.acwing.com/problem/content/description/22/【题目描述】 地上有一个 m 行和 n 列的方格,横纵坐标范围分别是 0∼m−1 和 0∼n−1。 一个机器人从坐标 (0,0) 的格子开始移动,每一次只能向左,右,上&#…...
RF手机天线仿真介绍(一):金属边框天线和LDS天线
目录 简介LDS天线LDS天线仿真 金属边框天线金属边框天线仿真 简介 最早的手机是外置式天线,从NOKIA开始采用内置式天线,开始采用内置金属片(一般是0.1MM厚的不锈钢片冲压而成),随后为降低成本,后来改用FPC…...
动手学深度学习—深度学习计算(层和块、参数管理、自定义层和读写文件)
目录 1. 层和块1.1 自定义块1.2 顺序块1.3 在前向传播函数中执行代码 2. 参数管理2.1 参数访问2.1.1 目标参数2.1.2 一次性访问所有参数2.1.3 从嵌套块收集参数 2.2 参数初始化2.2.1 内置初始化2.2.2 自定义初始化 2.3 参数绑定 3. 自定义层3.1 不带参数的层3.2 带参数的层 4. …...
Pytest学习教程_测试报告生成pytest-html(三)
前言 pytest-html 是一个用于生成漂亮的 HTML 测试报告的 pytest 插件。它可以方便地将 pytest 运行的测试结果转换为易于阅读和理解的 HTML 报告,提供了丰富的测试结果展示功能和交互性。 一、安装 # 版本查看命令 pytest版本: pytest --version pyte…...
模块化原理:source-map
1. webpack打包基本配置 1.安装webpack与webpack-cli npm i webpack webpack-cli 2.配置 "build":"webpack" 3. 新建webpack.config.js const path require(path); module.exports {// mode: "development",// 默认production(什么…...
【C++】开源:ncurses终端TUI文本界面库
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍ncurses终端文本界面库。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下…...
C语言的_Bool类型
C99 新增了 _Bool 类型,用于表示布尔值,即逻辑值 true 和 false。 _Bool 类型也是一种整数类型。 原则上 _Bool 类型只占用一位存储空间。 C语言将非 0 的数当为 true,0 当为 false。 代码示例: #include<stdio.h> int…...
【python爬虫】获取某一个网址下面抓取所有的a 超链接下面的内容
import requests as rq from bs4 import BeautifulSoup as bs import re# rooturl是传的是我需要查询和抓取的一个网址,可以是html js 等 def gethtml(rooturl, encoding"utf-8"):#默认解码方式utf-8response rq.get(rooturl)response.encoding encodin…...
AutoDL从0到1搭建stable-diffusion-webui
前言 AI绘画当前非常的火爆,随着Stable diffusion,Midjourney的出现将AI绘画推到顶端,各大行业均受其影响,离我们最近的AI绘画当属Stable diffusion,可本地化部署,只需电脑配备显卡即可完成AI绘画工作&…...
手动调整broker扩容后的旧topic分区
在broker扩容了两台机器之后,想让旧topic:quickstart76-events的分区也能铺满broker 1、创建一个topics-to-move.json json文件 $ vim topics-to-move.json json {"topics": [{"topic":"quickstart76-events"}],"v…...
【LeetCode-简单】剑指 Offer 25. 合并两个排序的链表(详解)
题目 入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 本题与主站 21 题相同:力扣 题目地址&#x…...
Java版工程行业管理系统源码-专业的工程管理软件-em提供一站式服务
Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目…...
【Spring】简化事件的使用,Spring提供了2种使用方式
Spring中事件可以配置顺序,利用线程池还可以做异步线程通知。怎么样使用事件?Spring简化事件的使用,Spring提供了2种使用方式:面向接口和面向EventListener注解。 1,面相接口的方式 案例 发布事件 需要先继承ApplicationEventP…...
探究Spring事务:了解失效场景及应对策略
在现代软件开发中,数据的一致性和完整性是至关重要的。为了保证这些特性,Spring框架提供了强大的事务管理机制,让开发者能够更加自信地处理数据库操作。然而,事务并非银弹,存在一些失效的情景,本文将带您深…...
Maven Manifold 条件编译
Maven 配置 通过 Maven 的不同 profile 实现不同环境传递不同符号。另外 lombok 可以 manifold 一同使用,见下方配置。 <properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.targ…...
4.数组与基本数学函数
一、数组 1.概念 数组是存放相同类型对象的容器,数组中存放的对象没有名字,而是要通过其所在的位置访问。数组中的每一个元素都相当于一个普通的变量,可以和普通变量一样进行赋值操作。 数组可以帮助我们批量地处理相同数据类型的相关数据…...
python与深度学习(十六):CNN和宝可梦模型二
目录 1. 说明2. 宝可梦模型的CNN模型测试2.1 导入相关库2.2 加载模型2.3 设置保存图片的路径2.4 加载图片2.5 数据处理和归一化2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章宝可梦模型训练的模型…...
PTA 1030 Travel Plan
个人学习记录,代码难免不尽人意。 A traveler’s map gives the distances between cities along the highways, together with the cost of each highway. Now you are supposed to write a program to help a traveler to decide the shortest path between his/h…...
MFC、Qt、WPF?该用哪个?
MFC、Qt和WPF都是流行的框架和工具,用于开发图形用户界面(GUI)应用程序。选择哪个框架取决于你的具体需求和偏好。MFC(Microsoft Foundation Class)是微软提供的框架,使用C编写,主要用于Windows…...
使用logback记录日志
1. Pom引用依赖 <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.11</version> </dependency> 2. logback.xml <?xml version"1.0" encoding"U…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙
WebGL:在浏览器中解锁3D世界的魔法钥匙 引言:网页的边界正在消失 在数字化浪潮的推动下,网页早已不再是静态信息的展示窗口。如今,我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室,甚至沉浸式的V…...
在Zenodo下载文件 用到googlecolab googledrive
方法:Figshare/Zenodo上的数据/文件下载不下来?尝试利用Google Colab :https://zhuanlan.zhihu.com/p/1898503078782674027 参考: 通过Colab&谷歌云下载Figshare数据,超级实用!!࿰…...
深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀”
深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀” 在JavaScript中,我们经常需要处理文本、数组、对象等数据类型。但当我们需要处理文件上传、图像处理、网络通信等场景时,单纯依赖字符串或数组就显得力不从心了。这时ÿ…...
