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

LEETERS题解

【题目描述】

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

【输入】

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

接着输出RR行SS列字母矩阵。

【输出】

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

【输入样例】

3 6
HFDFFB
AJHGDH
DGAGEH

【输出样例】

6
#include <iostream>
#include <vector>using namespace std;const int MAXN = 20;
char matrix[MAXN][MAXN];
bool visited[26];
int row , col;
int maxCount = 0;int dx[] = {-1 , 1  , 0 , 0};
int dy[] = {0 , 0 , - 1, 1};// 深度优先搜索函数
void dfs(int x  , int y , int count) {//跟新最大经过字母数maxCount = max (maxCount , count);//遍历四个选项for(int i = 0; i < 4 ; ++i ){int newX = x + dx[i];int newY = y + dy[i];//check 位置是否合法if(newX >= 0  && newX < row && newY >= 0 && newY < col){int letterindex = matrix[newX][newY] - 'A';if(!visited[letterindex]) {visited[letterindex] = true;dfs(newX , newY   , count+1) ;visited[letterindex] = false; //回溯}}}}
int main() {cin >> row >> col;for (int i = 0; i < row; ++i) {for (int j = 0; j < col; ++j) {cin >> matrix[i][j];}}// 标记起点字母已访问int startLetterIndex = matrix[0][0] - 'A';visited[startLetterIndex] = true;// 从左上角开始深度优先搜索dfs(0, 0, 1);cout << maxCount << endl;return 0;
}

相关文章:

  • QMK固件烧录指南:安全高效地更新您的机械键盘
  • 机器人手臂控制器:EMC电磁兼容解决(一)
  • Windows 查看电脑是否插拔过U盘
  • Unity SpriteCreator(精灵创造者)
  • LeetCode —— 94. 二叉树的中序遍历
  • ShaderToy学习笔记 06.摄像机
  • 基本功能学习
  • OpenGL-ES 学习(14) ----顶点指定和基本图元的绘制
  • 小米MiMo:7B模型逆袭AI大模型战场的技术密码
  • 【QNX+Android虚拟化方案】137 - msm-5.4 Kernel U盘 插入中断、枚举、匹配完整流程详解
  • 探秘数据结构:构建高效算法的灵魂密码
  • 【Android】四大组件之ContentProvider
  • POI从入门到上手(三)-轻松完成EasyExcel使用,完成Excel导入导出.
  • Node.js心得笔记
  • 数据库基本概念:数据库的定义、特点、分类、组成、作用
  • llamafactory-cli webui启动报错TypeError: argument of type ‘bool‘ is not iterable
  • Python10天冲刺-函数进行详细的性能分析
  • ES6-Set-Map对象小记
  • KDD 2025 | (8月轮)时间序列(Time Series)论文总结
  • PostgreSQL安装部署
  • 特朗普宣布提名迈克·沃尔兹为下一任美国驻联合国大使
  • 上海浪琴环球马术冠军赛明日启幕!五一假期在这里感受精彩
  • 山西太原一小区发生爆炸,造成1人遇难21人受伤2人失联
  • 国铁集团郑州局预计“五一”发送642.5万人
  • 西夏文残碑等文物来沪,见证一段神秘灿烂的历史
  • 太好玩了!坐进大卫·霍克尼的敞篷车进入他画笔下的四季