AcWing 1111:字母 ← dfs bfs

【题目来源】
https://www.acwing.com/problem/content/1113/

【题目描述】
给定一个 R×S 的大写字母矩阵,你的起始位置位于左上角,你可以向上下左右四个方向进行移动,但是不能移出边界,或者移动到曾经经过的字母(左上角字母看作第一个经过的字母)。
请问,你最多可以经过几个字母。

【输入格式】
第一行包含两个整数 R 和 S,表示字母矩阵的行和列。
接下来 R 行,每行包含一个长度为 S 的大写字母构成的字符串,共同构成字母矩阵。

【输出格式】
输出一个整数,表示最多能够经过的字母个数。

【数据范围】
1≤R,S≤20

【输入样例】
3 6
HFDFFB
AJHGDH
DGAGEH

【输出样例】
6

【算法分析】
要注意的是,这里的 st 数组不是标记走过的格子,而是标记字母是否被访问过。 

【算法代码:dfs】

#include <bits/stdc++.h>
using namespace std;int n,m;
int st[26];
int ans=-0x3f3f3f3f;
int dx[]={-1,0,1,0};
int dy[]={0,1,0,-1};
vector<string> v;void dfs(int x,int y,int step){int idx=v[0][0]-'A';st[idx]=1;for(int i=0;i<4;i++){int nx=x+dx[i];int ny=y+dy[i];if(nx>=0 && nx<n && ny>=0 && ny<m){int idx=v[nx][ny]-'A';if(st[idx]==1) continue;st[idx]=1;dfs(nx,ny,step+1);st[idx]=0;}}ans=max(ans,step);return;
}int main(){cin>>n>>m;for(int i=0;i<n;i++){string s;cin>>s;v.push_back(s);}dfs(0,0,1);cout<<ans<<endl;return 0;
}/*
in:
3 6
HFDFFB
AJHGDH
DGAGEHout:
6
*/


【算法代码:bfs】

#include <bits/stdc++.h>
using namespace std;int n,m;
int ans=-0x3f3f3f3f;
int dx[]={-1,0,1,0};
int dy[]={0,1,0,-1};
vector<string> v;struct MAP{int x;int y;int st[26];int step;
};void bfs() {queue<MAP> Q;MAP s;memset(s.st,0,sizeof(s.st));s.st[v[0][0]-'A']=1;s.step=1;s.x=0;s.y=0;Q.push(s);while(Q.size()){MAP t=Q.front();Q.pop();ans=max(ans,t.step);for(int i=0;i<4;i++){int nx=t.x+dx[i];int ny=t.y+dy[i];if(nx>=0 && nx<n && ny>=0 && ny<m){int idx=v[nx][ny]-'A';if(t.st[idx]==1) continue;MAP next;next.x=nx;next.y=ny;next.step=t.step+1;memcpy(next.st, t.st, sizeof(t.st));next.st[idx]=1;Q.push(next);}}}
}int main() {cin>>n>>m;for(int i=0;i<n;i++){string s;cin>>s;v.push_back(s);}bfs();cout<<ans<<endl;return 0;
}/*
in:
3 6
HFDFFB
AJHGDH
DGAGEH out:
6 
*/ 






【参考文献】
https://www.acwing.com/solution/content/15385/

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何重置woocommerce,如何批量删除woocommerce产品

默认情况下当我们在后台删除Woocommerce插件的时候&#xff0c;woocommerce 的数据并不会从数据库中自动清除。 这个时候&#xff0c;为了能清除数据库里的数据&#xff0c;我们可以在wp-config.php 文件里添加如下代码&#xff1a; define( WC_REMOVE_ALL_DATA, true ); 添…

VTK 简介

VTK 简介 VTK 简介什么是 VTK&#xff1f;VTK 能做什么&#xff1f;VTK 的基本组成VTK 的框架结构VTK 的数据结构VTK 的可视化流程参考 VTK 简介 什么是 VTK&#xff1f; VTK&#xff0c;全称是Visualization Toolkit&#xff0c;即可视化工具包。是一个开源、跨平台、可自由…

vue+element ui实现表单组件的封装

效果图&#xff1a; 主要是使用vue elmentUi 的from的基础上进行封装 使用改组件&#xff0c;是需要自定义从父组件传入一下字段表单字段 export const topicTypeMainTaskEdit: any new Map([// 主任务可编辑状态[feasibleInstructions, // 督办件[{value: documentNum…

云计算面临的威胁

目录 一、概述 二、威胁建模分析 2.1 威胁建模的概念 2.2 威胁建模起到的作用 2.3 威胁建模的流程 2.3.1 威胁建模流程图 2.3.2 威胁建模流程内容 2.3.2.1 绘制数据流图 2.3.2.2 威胁识别与分析 2.3.2.2.1 STRIDE威胁分析方法论 2.3.2.3 制定消减措施 2.3.2.3.1 消减…

景联文科技提供高质量医疗健康AI大模型数据

医疗行业是典型的知识和技术密集型行业&#xff0c;其发展水平直接关系到国民健康和生命质量。 医疗健康AI大模型&#xff0c;作为人工智能的一个分支&#xff0c;能够通过学习大量的数据来生成新的数据实例&#xff0c;在医药研发、医学影像、医疗文本分析等都有广泛的应用前景…

检索增强微调(RAFT)---使语言模型适应特定领域的 RAG

原文地址:retrieval-augmented-fine-tuning-raft 2024 年 3 月 29 日 摘要(Abstract) 论文介绍了一种名为Retrieval Augmented Fine Tuning(RAFT)的训练方法,旨在提升模型在特定领域“开卷”环境下回答问题的能力。RAFT通过训练模型忽略那些对回答问题没有帮助的文档(称为…

项目管理计划

《项目管理计划》 1.项目背景说明 2.项目目标和范围 3.项目组织架构 4.项目进度管理办法 5.项目沟通管理 6.项目风险管理 软件开发全套资料包获取进主页或文末个人名片直接获取。

Flutter Web 的未来,Wasm Native 即将到来

早在去年 Google I/O 发布 Flutter 3.10 的时候就提到过&#xff0c; Flutter Web 的未来会是 Wasm Native &#xff0c;当时 Flutter 团队就表示&#xff0c;Flutter Web 的定位不是设计为通用 Web 的框架&#xff0c;类似的 Web 框架现在有很多&#xff0c;而 Flutter 的定位…

containerd配置HTTP私仓

文章目录 1. &#x1f6e0;️ 基础环境配置2. &#x1f433; Docker安装3. &#x1f6a2; 部署Harbor&#xff0c;HTTP访问4. &#x1f4e6; 部署ContainerD5. &#x1f504; 修改docker配置文件&#xff0c;向harbor中推入镜像6. 配置containerd6.1. 拉取镜像验证6.2. 推送镜像…

React-2-useState-获取DOM-组件通信

一.useState useState 是一个 React Hook&#xff08;函数&#xff09;&#xff0c;它允许我们向组件添加一个状态变量, 从而控制影响组件的渲染结果 本质&#xff1a;和普通JS变量不同的是&#xff0c;状态变量一旦发生变化组件的视图UI也会跟着变化**&#xff08;数据驱动视…

maven本地引入tongweb7的jar包的方法

#jar包目录 cd /d D:\develops\mavenjars mvn install:install-file -Dfile./tongweb-spring-boot-starter-2.x-7.0.E.6_P2.jar -DgroupIdcom.tongweb.springboot -DartifactIdtongweb-spring-boot-starter-2.x -Dversion7.0.E.6_P2 -Dpackagingjar mvn install:install-file -…

3453: 【PY】餐厅AA制付费

题目描述 3个人在餐厅吃饭&#xff0c;总共花费n元&#xff0c;他们还想留 15%的小费给服务员。每个人该付多少? &#xff08;付费方式是AA制&#xff0c;即每个人平分花费&#xff09; n是3个人的合计消费&#xff08;不包括小费&#xff09; 输入 3个人的合计消费&…

自建SSL证书(兼容ios)

于SSL/TLS服务器证书&#xff0c;特别是那些用于HTTPS网站的证书&#xff0c;有几个关键的扩展和属性是必要的&#xff0c;以确保证书可以被客户端&#xff08;如浏览器&#xff09;正确识别和信任。这些细节对于确保加密连接的安全性至关重要。以下是一些关键的证书详情和扩展…

网络原理 - HTTP / HTTPS(1)——http请求

目录 一、认识HTTP协议 理解 应用层协议 二、fiddler的安装以及介绍 1、fiddler的安装 2、fiddler的介绍 三、HTTP 报文格式 1、http的请求 2、http的响应 五、认识URL 六、关于URL encode 一、认识HTTP协议 HTTP 全称为&#xff1a;“超文本传输协议”&#xff0c;是…

数据挖掘比赛比较基础的baseline

目录 LGBM/XGB/CAT的接口 Scikit-learn接口 原生接口 LightGBM介绍 应用场景

好物分享:FPGA实现SDI视频编解码的方案设计汇总

目录 1、前言2、专用芯片方案2.1、GS2971FPGA的图像采集 设计方案2.2、GS2971FPGA的图像采集图像缩放 设计方案2.3、GS2971FPGA的图像采集纯verilog图像缩放纯verilog视频拼接 设计方案2.4、GS2971FPGA的图像采集HLS图像缩放Video Mixer视频拼接 设计方案2.5、GS2971FPGA的图像…

Android RecycleView 缓存 itemView 提高滑动流畅度

RecyclerView 是 Android 官方推荐的用于展示大量数据列表的控件&#xff0c;具有高度的可定制性和灵活性。我们可以通过自定义 LayoutManager、ItemDecoration、ItemAnimator 等来实现不同的布局和动画效果&#xff0c;满足各种需求。同时&#xff0c;RecyclerView 支持局部刷…

C++初阶:5.STL简介(了解)

STL简介&#xff08;了解&#xff09; 一.什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架。 二. STL的版本 原始版本 Alexander Stepan…

算法设计课第二周(分治 芯片测试)

实验2 芯片测试算法设计 一、【实验目的】 &#xff08;1&#xff09;理解分治策略的设计思想&#xff1b; &#xff08;2&#xff09;熟悉将伪码转换为可运行的程序的方法&#xff1b; &#xff08;3&#xff09;能够根据算法的要求设计具体的实例。 二、【实验内容】 有…

【教学类-09-06】20240401细线迷宫图01+箭头图片(A4横版一页-1份横版)

作品展示 作品展示 word模板 重点说明 代码展示 批量制作细线条的迷宫图(A4横板一面一份横版)图片加箭头图片 作者&#xff1a; 1、落难Coder https://blog.csdn.net/u014297502/article/details/124839912 2、AI对话大师、 3、阿夏 作者&#xff1a;2024年4月3日 numint(input…