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

泰州外贸网站设计烟台主流网站

泰州外贸网站设计,烟台主流网站,专业做w7系统的网站,加强检察门户网站建设情况前言 记录一下刷题历程 力扣第79题 单词搜索 单词搜索 原题目:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻…

前言

记录一下刷题历程 力扣第79题 单词搜索


单词搜索

原题目:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

示例 1:在这里插入图片描述

输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”
输出:true
示例 2:在这里插入图片描述

输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “SEE”
输出:true
示例 3:
在这里插入图片描述

输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCB”
输出:false

分析

根据题意并没有好的简单的办法只能使用深度优先搜索一个一个匹配,以示例1为例,先是字母A发现匹配,然后分别向上下左右去找下一个匹配的,加入向下搜索发现不匹配那么就回溯到A继续搜索其它方向,直到搜索出单词返回true。

代码如下:

class Solution {
public:bool exist(vector<vector<char>>& board, string word) {// 获取棋盘的行数和列数int rows = board.size();int cols = board[0].size();// 创建一个二维布尔数组用于标记每个位置是否被访问过vector<vector<bool>> visit(rows, vector<bool>(cols, false));// 遍历棋盘的每一个位置作为搜索的起点for (int row = 0; row < rows; row++) {for (int col = 0; col < cols; col++) {// 从当前起点位置开始进行深度优先搜索(DFS)if (dfs(board, word, row, col, 0, visit)) {// 如果找到了目标单词,则返回 truereturn true;}}}// 如果遍历完所有起点位置都没有找到目标单词,则返回 falsereturn false;}bool dfs(vector<vector<char>>& board, string word, int row, int col, int index, vector<vector<bool>>& visit) {// 如果当前索引等于目标单词的长度,说明找到了完整的单词if (index == word.length()) {return true;}// 如果当前坐标超出棋盘边界,或者当前字符不匹配,或者当前坐标已经被访问过,则返回 falseint rows = board.size();int cols = board[0].size();if (row >= rows || row < 0 || col >= cols || col < 0 || board[row][col] != word[index] || visit[row][col]) {return false;}// 标记当前位置已被访问visit[row][col] = true;// 递归地探索四个方向(上下左右),查找是否可以继续匹配目标单词bool res = dfs(board, word, row + 1, col, index + 1, visit) || // 向下dfs(board, word, row - 1, col, index + 1, visit) || // 向上dfs(board, word, row, col + 1, index + 1, visit) || // 向右dfs(board, word, row, col - 1, index + 1, visit);   // 向左// 回溯时,取消当前位置的访问标记visit[row][col] = false;// 返回是否找到了目标单词return res;}
};

解释注释

1.exist 方法:该方法负责在棋盘上查找是否存在目标单词。

首先获取棋盘的行数和列数,并创建一个二维布尔数组 visit 用于记录每个位置是否已经被访问过。
遍历棋盘上的每一个位置,将其作为 DFS 搜索的起点。
对每个起点调用 dfs 方法进行深度优先搜索,如果找到了目标单词,则返回 true。
如果遍历完所有位置后都没有找到目标单词,则返回 false。

2.dfs 方法:这是一个递归函数,用于从当前坐标进行深度优先搜索。

当 index 等于目标单词的长度时,说明找到了完整的单词,返回 true。
如果当前位置超出边界、字符不匹配或已经被访问过,则返回 false。
标记当前位置已被访问,然后递归探索上下左右四个方向。
递归完成后,取消当前位置的访问标记(回溯),以便其他路径可以访问到该位置。
返回是否找到目标单词。

http://www.yayakq.cn/news/980894/

相关文章:

  • 上海网站建设哪家公司好js网站开发视频
  • 高端制作网站服务秦皇岛外贸网站建设
  • 西安做网站的公司报价福州建设发展集团有限公司网站
  • 模板网站建设信息长春公司网站推广
  • 二级a做爰片免费网站网易游戏官网
  • 接网站开发做多少钱排版网页设计教程
  • 网站可以个人备案吗微信小程序怎么做开发
  • 公司网站建设的好处flash怎么做网页
  • 做企业内部网站要多久焦作网站开发公司电话
  • 手机版网站如何做动漫公司网站建设
  • ps做网站尺寸在万网申请的域名_需要把万网的账户密码给做网站的吗
  • 顺德水利和国土建设局网站网站修改报价
  • 第二章 网站建设艺客网站首页
  • 潮阳网站制作中国建设网上银行个人登录
  • 淘宝做链接有哪些网站可以做端口映射 wordpress
  • 用织梦做网站后面可以改吗企业公司网站模板下载
  • 没有文章更新的网站怎么做优化提供服务好的网站归档系统
  • 长春城投建设投资有限公司网站会计培训班初级费用
  • 全景旅游网站建设商务网站的建设步骤
  • php的网站模板网站全站开发
  • 网站建设一般多少钱要如何选择广东建设工程执业资格注册中心网站
  • 万网 速成网站网站编辑有前途吗
  • 泉州网站建设设计网站注册属于自己的网站
  • 卡盟网站制作教程劳务公司注册流程和费用
  • 如何选择网站关键词狮城app更多网站
  • 江苏省住房和建设部网站首页自己建设个人网站要花费多少
  • 网上做室内设计的网站广告设计专业出来做什么
  • 做网站的公司一般怎么培训销售国内较好的网站设计公司
  • 网站建设月总结亚马逊跨境电商开店
  • 中国建设银行官网首页 网站成都建设网上办事大厅