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

seosem顾问/seo排名谁教的好

seosem顾问,seo排名谁教的好,做景观要知道哪些网站,自适应式网站模板1、题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平…

1、题目描述

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

例如,在下面的 3×4 的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。
在这里插入图片描述
示例 1
输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”
输出:true
示例 2
输入:board = [[“a”,“b”],[“c”,“d”]], word = “abcd”
输出:false

2、VS2019上运行

使用回溯的方法

#include <iostream>
#include <vector>
using namespace std;class Solution {
public:bool check(vector<vector<char>>& board, vector<vector<int>>& visited, int i, int j, string& s, int k) {// 检查当前坐标的字母是否与目标单词中的对应字母相等if (board[i][j] != s[k]) {return false;}// 如果已经匹配到目标单词的最后一个字母,表示找到了路径,返回trueelse if (k == s.length() - 1) {return true;}visited[i][j] = true; // 将当前坐标标记为已访问vector<pair<int, int>> directions{ {0, 1}, {0, -1}, {1, 0}, {-1, 0} }; // 上、下、左、右四个方向bool result = false; // 用于记录是否找到路径// 依次遍历四个方向for (const auto& dir : directions) {int newi = i + dir.first, newj = j + dir.second; // 计算新坐标// 检查新的坐标是否在矩阵范围内且没有被访问过if (newi >= 0 && newi < board.size() && newj >= 0 && newj < board[0].size()) {if (!visited[newi][newj]) {//用于检查位置(newi, newj)是否已经被访问过// 递归调用check函数进行下一步的搜索bool flag = check(board, visited, newi, newj, s, k + 1);if (flag) {result = true; // 如果找到路径,直接返回truebreak;}}}}visited[i][j] = false; // 撤销对当前坐标的标记return result;}bool exist(vector<vector<char>>& board, string word) {int h = board.size(), w = board[0].size(); // 矩阵的行数和列数vector<vector<int>> visited(h, vector<int>(w)); // 记录每个格子的访问状态// 遍历矩阵的每个格子,对每个格子调用check函数for (int i = 0; i < h; i++) {for (int j = 0; j < w; j++) {bool flag = check(board, visited, i, j, word, 0); // 调用check函数进行搜索if (flag) {return true; // 如果找到路径,直接返回true}}}return false; // 遍历结束后仍未找到路径,返回false}
};int main() {// 示例用法vector<vector<char>> board = {{'A', 'B', 'C', 'E'},{'S', 'F', 'C', 'S'},{'A', 'D', 'E', 'E'}};Solution s;string word = "ABCCED";if (s.exist(board, word)) {cout << "Word exists in the board." << endl;}else {cout << "Word does not exist in the board." << endl;}return 0;
}

Word exists in the board.

3、整体思路

整体的思路是使用深度优先搜索(DFS)算法在矩阵中搜索是否存在与目标单词匹配的路径。

  • 首先,定义一个 check 函数来进行递归的搜索。该函数接收当前的坐标 (i, j)、目标单词 s、以及目前匹配的字符索引 k。函数的返回值是一个布尔值,表示是否找到了匹配的路径。
  • 在 check 函数中,首先进行边界条件的判断。如果当前索引 k 已经匹配到目标单词的最后一个字符,说明已经找到了匹配的路径,返回 true。
  • 接下来,检查当前坐标 (i, j) 处的字母是否与目标单词中的对应字母相等。如果不相等,说明当前路径匹配失败,返回 false。
  • 检查新坐标是否在矩阵的范围内,并且该位置没有被访问过(即 visited[newi][newj] = false)。
    如果满足上述条件,则递归调用 check 函数,在新坐标 (newi, newj) 上继续匹配下一个字符,即 k + 1。
  • 如果递归调用返回 true,表示在某个方向上找到了匹配的路径,直接返回 true。
    如果所有方向的递归调用都没有找到匹配的路径,则撤销对当前坐标 (i, j) 的标记,将 visited[i][j] 设置为 false,表示可以重新访问该位置。
  • 最后,如果所有方向都探索完毕,仍然没有找到匹配的路径,则返回 false,表示没有找到路径。
  • 接下来可以调用 check 函数,从矩阵的每个位置出发,判断是否存在与目标单词匹配的路径。如果返回 true,则说明存在这样的路径;如果返回 false,则说明不存在。
  • 这就是整体的思路,通过DFS算法搜索矩阵中的路径,并利用递归和回溯的思想进行搜索和撤销标记。

4、int h = board.size(), w = board[0].size();

  • 这行代码int h = board.size(), w = board[0].size();的作用是获取二维字符向量board的行数h和列数w。
  • 1.board.size()返回二维字符向量board的行数,即向量中包含的子向量个数。
    2.board[0].size()返回二维字符向量board中第一行子向量的列数,假设矩阵不为空。

5、vector<vector> visited(h, vector(w));

  • 这行代码vector<vector<int>> visited(h, vector<int>(w));创建了一个名为visited的二维整数向量,其大小与输入矩阵board的行数和列数相同。
  • 1.vector<int>(w)部分创建了一个大小为w的整数向量。
  • 2.vector<vector<int>> visited(h, vector<int>(w));使用上述创建的子向量为每一行创建了一个整数向量,从而形成了一个大小为h行、w列的二维整数向量visited。
  • 这样的二维向量visited可以用于跟踪和记录在处理board矩阵时已经访问过的位置或标记。

6、dir.first 和dir.second

  • dir.first表示dir这个pair(键值对)中的第一个元素,即表示方向的行坐标变化。在该上下左右的方向向量中,dir.first表示上下移动的行坐标的变化量。
  • 例如,如果dir是(-1, 0),那么dir.first就是-1,表示向上移动1行。同理,如果dir是(1, 0),那么dir.first就是1,表示向下移动1行。
  • 在搜索一个矩阵的周围方向时,dir.first的值用于计算新的行坐标。通过将当前位置的行坐标i与dir.first相加,可以得到新的行坐标,用于在矩阵中检查相邻位置是否符合要求。

7、visited[i][j] = false;

  • 这行代码为撤销对当前坐标(i, j)的访问标记,将其重新设置为false。
  • 标记的目的是为了跟踪遍历矩阵时已经访问过的位置,以避免重复访问。在代码中,visited向量用于标记位置是否已经被访问过。
  • 当程序进行完成对位置(i, j)的处理后,如果希望在后续的搜索或迭代中能够重新访问该位置,就需要撤销对该位置的访问标记,将visited[i][j]重新设置为false。
  • 撤销对当前坐标的标记允许在后续的遍历或搜索过程中重新考虑访问该位置,以发现其他可能的路径或结果。如果不撤销标记的话,可能会导致某些位置被错误地标记为已访问,从而错过了找到其他路径或结果的机会。因此,需要在适当的时候撤销对当前坐标的标记。

8、for (const auto& dir : directions)

  • for (const auto& dir : directions) 是一个范围-based的循环语句,用于遍历容器 directions 中的元素。
  • 在这个语句中,dir 是一个临时变量,它会依次取到 directions 中的每个元素值。关键字 auto 会自动推断 dir 的类型,使其与 directions 中的元素类型保持一致。const 修饰符表示 dir 是一个常量,即在循环体内不能对它进行修改。
  • 通过这个循环语句,可以依次遍历 directions 容器中的每个方向,执行相应的操作,如计算新坐标 (newi, newj),进行路径匹配等。这样可以依次尝试不同的方向,以搜索矩阵中是否存在与目标单词匹配的路径。

相关文章:

剑指Offer12.矩阵中的路径 C++

1、题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是那些水平…...

金鸣识别将无表格线的图片转为excel的几个常用方案

我们知道&#xff0c;金鸣识别要将横竖线齐全的表格图片转为excel非常简单&#xff0c;但要是表格线不齐全甚至没有表格线的图片呢&#xff1f;这就没那么容易了&#xff0c;在识别这类图片时&#xff0c;我们一般会使用以下的一种或多种方法进行处理&#xff1a; 1. 基于布局…...

刚刚更新win11,记事本消失怎么处理?你需要注意些什么?

记录window11的bug hello&#xff0c;我是小索奇 昨天索奇从window10更新到了window11&#xff0c;由于版本不兼容卸载了虚拟机&#xff0c;这是第一个令脑壳大的&#xff0c;算了&#xff0c;还是更新吧&#xff0c;了解了解win11的生态&#xff0c;后期重新装虚拟机 第一个可…...

【QT】 QTabWidgetQTabBar控件样式设计(QSS)

很高兴在雪易的CSDN遇见你 &#xff0c;给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT控件QTabWidget&QTabBar的样式设计&#xff0c;介绍两者可以自定义的内容&#xff0c;以及如何定义&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴…...

【个人记录】CentOS7 编译安装最新版本Git

说明 使用yum install git安装的git版本是1.8&#xff0c;并不是最新版本&#xff0c;使用gitlab-runner托管时候会拉项目失败&#xff0c;这里使用编译源码方式安装最新版本的git。 基础环境安装 echo "nameserver 8.8.8.8" >> /etc/resolv.conf curl -o /…...

【Linux】计算机网络的背景和协议分层

文章目录 网络发展协议何为协议网络协议协议分层OSI七层模型TCP/IP五层模型&#xff08;四层&#xff09; 基本通信流程mac地址和ip地址网络通信本质 网络发展 从一开始计算机作为一台台单机使用&#xff0c;到现在网络飞速发展&#xff0c;从局域网Lan建立起局域网&#xff0…...

代理模式:静态代理+JDK/CGLIB 动态代理

文章目录 1. 代理模式2. 静态代理3. 动态代理3.1. JDK 动态代理机制3.1.1. 介绍 3.1.2. JDK 动态代理类使用步骤3.1.3. 代码示例3.2. CGLIB 动态代理机制3.2.1. 介绍3.2.2. CGLIB 动态代理类使用步骤3.2.3. 代码示例 3.3. JDK 动态代理和 CGLIB 动态代理对比 4. 静态代理和动态…...

gps虚拟定位 AnyGo for Mac 中文

要在AnyGo中进行Gps位置模拟&#xff0c;您只需连接您的设备并选择“位置模拟”选项&#xff0c;然后输入您想要模拟的位置信息即可。通过使用AnyGo&#xff0c;您可以轻松地模拟任何地方的位置&#xff0c;而无需实际去到那个地方。 借助AnyGo&#xff0c;您可以通过在地图上…...

LLM reasoners 入门实验 24点游戏

LLM reasoners Ber666/llm-reasoners 实验过程 实验样例24games&#xff0c;examples/tot_game24&#xff0c;在inference.py中配置使用代理和open ai的api key。 首先安装依赖 git clone https://github.com/Ber666/llm-reasoners cd llm-reasoners pip install -e .然后…...

【LeetCode 算法】Maximum Absolute Sum of Any Subarray 任意子数组和的绝对值的最大值-前缀和

文章目录 Maximum Absolute Sum of Any Subarray 任意子数组和的绝对值的最大值问题描述&#xff1a;分析代码前缀和前缀和 Tag Maximum Absolute Sum of Any Subarray 任意子数组和的绝对值的最大值 问题描述&#xff1a; 给你一个整数数组 nums 。一个子数组 [ n u m s l ,…...

怎么建立大型语言模型

建立大型语言模型通常涉及以下主要步骤&#xff1a; 数据收集&#xff1a;收集大规模的文本数据作为模型的训练数据。可以从各种来源获取数据&#xff0c;如互联网、书籍、新闻文章等。数据的质量和多样性对于模型的性能至关重要。 数据预处理&#xff1a;对收集到的数据进行预…...

docker简介和安装

什么是docker&#xff1f; docker是基于Go语言编写的开源容器引擎&#xff0c;是操作系统级别的轻量级虚拟技术。主要用于应用打包、分发、部署。 打包&#xff1a;软件开发过程中&#xff0c;打包是将程序打包成软件包或者镜像的过程&#xff1b;在容器化程序中&#xff0c;打…...

记录问题: servlet获取项目包绝对路径

【2023-8-8 23:46:27 星期二】 如何获取在webapp下的路径?而不是target包下的webapp目录 比如这里应该获取到 F:\Tiam\Desktop\freemarker\freemarker-demo01\src\main\webapp 而readPath总是获取到 F:\Tiam\Desktop\freemarker\freemarker-demo01\target\freemarker-demo0…...

C语言文件操作基本方法

1、文件的分类 ANSI C 的缓冲文件系统 缓冲文件系统 缓冲文件系统是指&#xff0c;系统自动地在内存区为每个正在使用的文件开辟一个缓冲区。 从内存向磁盘输出数据时&#xff0c;必须首先输出到缓冲区中。待缓冲区装满后&#xff0c;再一起输出到磁盘文件中。 从磁盘文件向内…...

SQL 相关子查询 和 不相关子查询、Exists 、Not Exists、 多表连接(包含自连接)

不相关子查询 子查询的查询条件不依赖于父查询&#xff0c;称不相关子查询。子查询可以单独运行的 select stu_id,sex,age from student t where sex(select sexfrom studentwhere stu_id10023 )相关子查询 关联子查询 子查询的查询条件依赖于父查询&#xff0c;称为 相关子…...

项目规范 编写规范(范例)

项目目录 目录接口参考 项目目录结构设计&#xff0c;增加部分领域模型后缀强制定义&#xff0c;方便统一编码风格。 controller&#xff1a;请求处理 RestController module&#xff1a;按大业务区分&#xff0c;对多个业务对象数据聚合处理 Component manager&#xff1a;…...

MongoDB数据库操作及操作命令

目录 一、基础概念 二、安装mongod 三、命令交互数据库 &#xff08;1&#xff09;数据库命令 &#xff08;2&#xff09;集合命令 &#xff08;3&#xff09;文档命令 四、Mongoose &#xff08;1&#xff09;增加一条数据 &#xff08;2&#xff09;插入多个数据 &am…...

Linux命令(62)之tee

linux命令之tee 1.tee介绍 linux命令tee于读取标准输入的数据&#xff0c;并将内容输出为文件 2.tee用法 tee [参数] [filename] tee参数 参数说明-a读取标准输入的数据&#xff0c;并将内容追加到文件&#xff0c;而非覆盖-i忽略中断信号 3.实例 3.1.将ls -l输出内容作为…...

搭建Repo服务器

1 安装repo 参考&#xff1a;清华大学开源软件镜像站:Git Repo 镜像使用帮助 2 创建manifest仓库 2.1 创建仓库 git init --bare manifest.git2.2 创建default.xml文件 default.xml文件内容&#xff1a; <?xml version"1.0" encoding"UTF-8" ?…...

安卓:MMKV——键值存储库

目录 一、MMKV介绍 1.特点和优势&#xff1a; 2.使用指南&#xff1a; 3.依赖包&#xff1a; 二、MMKV的常用方法 1、初始化和获取实例&#xff1a; 2、存储数据&#xff1a; 3、读取数据 4、删除数据 5、其他操作&#xff1a; 三、MMKV的使用例子 MainActivity&#xff…...

使用Python将图像转换为PDF:一次性解决您的批量转换需求

导语&#xff1a; 在数字化时代&#xff0c;我们经常需要处理大量的图像文件。将这些图像转换为PDF格式可以方便地存档、分享和打印。本文将介绍如何使用Python编程语言将图像批量转换为PDF&#xff0c;并提供了一个简单易用的图形界面来跟踪转换进度。 准备工作 在开始之前…...

Vue——webpack

webpack 一、Install1.全局安装2.局部安装 二、总结1.打包2.定义脚本3.配置文件定义&#xff08;webpack.config.js)4.项目重新加载依赖5.webpack打包Css6.style-loader 一、Install 1.全局安装 npm install webpack webpack-cli -g2.局部安装 以项目为单位&#xff0c;一个项…...

springboot房地产管理java购房租房二手房j客户sp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 springboot房地产管理 系统1权限&#xff1a;管理员 …...

Gartner 发布影响数据科学和机器学习未来方向重要趋势

出品 | CSDN 云计算 供稿 | Gartner Gartner今日发布了影响数据科学与机器学习&#xff08;DSML&#xff09;未来方向的重要趋势。随着DSML行业的快速发展和演变&#xff0c;数据对于人工智能&#xff08;AI&#xff09;开发与运用的重要性日益提高&#xff0c;尤其是投资重点…...

72. 编辑距离

题目介绍 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符删除一个字符替换一个字符 示例 1&#xff1a; 输入&#xff1a;word1 "horse", word2 &q…...

Android12.0 原生系统SystemUI下拉状态栏和通知栏视图之锁屏通知布局

1.前言 在12.0的系统rom定制化开发中,对于系统原生systemui的锁屏界面的功能也是非常重要的,所以在锁屏页面布局中,也是有通知栏布局的,所以接下来对于息屏亮屏 通知栏布局的相关流程分析,看下亮屏后锁屏页面做了哪些功能 2.原生系统SystemUI下拉状态栏和通知栏视图之锁…...

周末在家值班,解决几个月前遗忘的Bug

问题&#xff1a; 周末被迫在家值班&#xff0c;无聊之际打开尘封已久的Bug清单&#xff0c;发现有Bug拖了几个月还没解决… 场景是这样子的&#xff0c;有个功能是拿Redis缓存热点数据进行展示&#xff0c;暂且称它为功能A&#xff0c;有个另外的功能B&#xff0c;它会去更新缓…...

Shell编程基础(十五)文本三剑客(sed)

文本三剑客&#xff08;sed&#xff09; 使用场景基本语法实例命令列表 使用场景 sed提供了一种面交互的方式修改文件内容。 它是一行一行处理&#xff0c;可以通过正则匹配要修改的部分 基本语法 基本语法 sed [-opt] command files(多个文件 空格隔开) sed 使用正则 sed -…...

5,二叉树【p6-p7】

二叉树 5.1二叉树5.1.1例1&#xff1a;用递归和非递归两种方式实现二叉树的先序、中序、后序遍历5.1.1.1递归序的先序、中序、后序遍历先序遍历&#xff1a;中序遍历&#xff1a;后序遍历&#xff1a; 5.1.1.2非递归序的先序、中序、后序遍历先序遍历&#xff1a;中序遍历&…...

【Spring】如果你需要使用重试机制,请使用Spring官方的Spring Retry

文章目录 前言Spring Retry的基本使用第一步&#xff0c;引入Spring Retry的jar包第二步&#xff0c;构建一个RetryTemplate类第三步&#xff0c;使用RETRY_TEMPLATE注意事项 拓展方法降级操作重试策略&#xff1a;时间策略重试策略&#xff1a;指定异常策略 前言 Spring Retr…...