当前位置: 首页 > ai >正文

【数据结构入门训练DAY-32】LETTERS

本文介绍了一个关于使用深度优先搜索(DFS)解决字母矩阵问题的训练内容。题目要求在一个R×S的大写字母矩阵中,从左上角开始移动,可以上下左右四个方向移动,但不能重复经过相同的字母,目标是找出最多能经过的不同字母数量。解题思路是通过DFS递归搜索矩阵中的每个字母,使用布尔数组标记已访问的字母,并在每个位置检查上下左右的字母是否未被访问过,继续递归搜索。文章还强调了在编码过程中if和else if语句的正确使用,以及严谨编码习惯的重要性。通过这次训练,不仅提升了解题思维,还加深了对编程细节的理解。

文章目录

  • 前言
  • 一、题目
  • 二、解题思路
  • 总结


前言

本次训练内容

  1. 训练DFS处理相同字母的问题。
  2. 对编码习惯的养成。
  3. 训练解题思维。

一、题目

给出一个roe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。

输入格式

第一行,输入字母矩阵行数R和列数S,1≤R,S≤20。
接着输出RR行SS列字母矩阵。

输出格式

最多能走过的不同字母的个数。

样例输入

3 6
HFDFFB
AJHGDH
DGAGEH

样例输出

6

二、解题思路

        今天的题目,我的思路就是依次搜索回溯矩阵里的各个字母,如果遇到了新的字母就对其进行标记。我是使用bool来进行标记的,然后建立一个二维数组进行存储字母矩阵,再根据题意依次对当前字母位置的上下左右进行判断;具体代码实现如下:

#include <bits/stdc++.h>
using namespace std;
int R,S;
int sum=0;
char Array[26][26];
bool Check[10000];//标记处
void DFS(int x,int y,int k) {//定义的DFS函数
//处理逻辑if (x-1>0&&!Check[Array[x-1][y]]) {//上Check[Array[x-1][y]] = true;DFS(x-1,y,k+1);Check[Array[x-1][y]] = false;}if (y-1>0&&!Check[Array[x][y-1]]) {//左Check[Array[x][y-1]] = true;DFS(x,y-1,k+1);Check[Array[x][y-1]] = false;}if (x+1<=R&&!Check[Array[x+1][y]]) {//下Check[Array[x+1][y]] = true;DFS(x+1,y,k+1);Check[Array[x+1][y]] = false;}if (y+1<=S&&!Check[Array[x][y+1]]) {//右Check[Array[x][y+1]] = true;DFS(x,y+1,k+1);Check[Array[x][y+1]] = false;}sum=max(sum,k);//取最多的情况
}
int main() {cin>>R>>S;for (int i=1;i<=R;++i) {for (int j=1;j<=S;++j) {cin>>Array[i][j];}}Check[Array[1][1]] = true;//标记矩阵第一个字母DFS(1,1,1);cout<<sum;
}

注意if和else if的使用区别!!! 


总结

        今天的题目相对容易,我一下就明白了题目的意思,然后很快的进行逻辑编写,但是今天在if和else if的使用部分发生了问题,我以前一直觉得它俩都差不多,直到今天才深入了解到它俩区别很大。所以在训练的过程中,不仅是训练解题思维,也要养成严谨的编码习惯!

http://www.xdnf.cn/news/5532.html

相关文章:

  • 【C++进阶篇】多态
  • 设计杂谈-工厂模式
  • 象限法思维
  • 2025年AI工程师认证深度解析:AAIA认证体系全景指南与实战策略
  • css3响应式布局
  • 将语言融入医学视觉识别与推理:一项综述|文献速递-深度学习医疗AI最新文献
  • 初识 Pandas:Python 数据分析的利器
  • 质控脚本来喽
  • Java设计模式之适配器模式:从入门到精通
  • 绝缘子缺陷检测数据集VOC+YOLO格式1566张3类别
  • lua入门语法,包含安装,注释,变量,循环等
  • spring boot3.0自定义校验注解:文章状态校验示例
  • 从攻击者角度来看Go1.24的路径遍历攻击防御
  • 数模分离颠覆未来:打造数字时代核心生产力引擎
  • 五、Hive表类型、分区及数据加载
  • 力扣HOT100之二叉树:101. 对称二叉树
  • 洛谷 P1955 [NOI2015] 程序自动分析
  • hdfs客户端操作-文件上传
  • LegoGPT,卡内基梅隆大学推出的乐高积木设计模型
  • 视觉-语言-动作模型:概念、进展、应用与挑战(下)
  • day18-数据结构引言
  • 【Python】UV:单脚本依赖管理
  • DVWA在线靶场-SQL注入部分
  • The Graph:区块链数据索引的技术架构与创新实践
  • maitrix-org/Voila-chat:端到端音频聊天模型
  • 如何判断IP是否被平台标记
  • 深入解读tcpdump:原理、数据结构与操作手册
  • YAFFS2 的 `yaffs_obj` 数据结构详解
  • JAVA EE_网络原理_数据链路层
  • R语言实战第5章(1)