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

leetcode 79 单词搜索

一、题目描述

二、解题思路

整体思路

首先找到入口(字符串的第一个字符),再从入口开始进行搜索,可以采用回溯+剪枝的方法来解决这个问题。

具体思路

(1)函数功能:dfs函数用于从board[i][j]开始搜索从word[pos]开始的匹配的字符串,如果可以找到,就返回true,如果找不到,就返回false;

(2)递归出口:当pos==word.size()时,表示字符串已经在board找到了,返回true;

(3)函数体:以board[i][j]为起点,向上、右、下、左探索,判断其值是否等于word[pos](考虑是否越界,新探索的位置是否被拜访过),以此类推,直到探索到尽头;

注意观察点(i,j)上(i,j+1)、右(i+1;j)、下(i,j-1)、左(i-1,j)点的坐标规律,可以用dx数组和dy数组来实现上、右、下、左探索;

<1>循环从0到3,对(i,j)位置按上、右、下、左的方式进行探索,如果(x,y)没有越界且未被拜访且board[x][y]==word[pos],就将visited[x][y]赋值为true,再dfs处理pos+1位置;

<2>如果dfs(board,i,j,pos+1,word)==true,存在题目需要的情况,直接返回true;

<3>如果没有找到,就回溯恢复现场;

<4>若以(i,j)为起点的所有路径都已经搜索完且未找到题目需要的情况,就返回false;

三、代码实现

class Solution {int m;int n;vector<vector<bool>>visited;
public:bool exist(vector<vector<char>>& board, string word) {m=board.size();n=board[0].size();visited.resize(m,vector<bool>(n,false));//寻找出口for(int i=0;i!=m;i++)for(int j=0;j!=n;j++){if(board[i][j]==word[0]){visited[i][j]=true;if(dfs(board,i,j,1,word)) return true;visited[i][j]=false;}}return false;}int dx[4]={0,1,0,-1};int dy[4]={1,0,-1,0};bool dfs(vector<vector<char>>& board,int i,int j,int pos,string word){//递归出口if(pos==word.size()) return true;for(int k=0;k!=4;k++){int x=i+dx[k];int y=j+dy[k];if(x>=0&&x<m&&y>=0&&y<n&&!visited[x][y]&&board[x][y]==word[pos]){visited[x][y]=true;if(dfs(board,x,y,pos+1,word)) return true;//恢复现场visited[x][y]=false;}}return false;}
};

http://www.dtcms.com/a/445703.html

相关文章:

  • 站长之家官网查询电子商务网站建设与实践上机指导
  • 二叉树实战笔记:结构、遍历、接口与 OJ 实战
  • 哈尔滨php网站开发公司设置网站默认首页
  • 华为OD机试C卷 - 分披萨 - 贪心 DFS - (Java C++ JavaScript Python)
  • 仿照STM32 HAL库设计思想使用FreeRTOS实现异步非阻塞式设备驱动
  • 铜川做网站电话网页设计规范
  • ssc-FinLLM 金融大模型 相关链接
  • 二叉排序树(建树、查找、删除)
  • Linux学习笔记--i2cget 命令
  • 网站建设的标签指的是响应式网页设计图片
  • 用 CodeBuddy CLI + Prompt,从零到可运行:前后端混合管理系统的高效实战
  • 电源——电荷泵详解
  • 榆林国贸网站建设网站的关键词挖掘方式
  • 从思路到落地:用 Redis 搭建超低延迟在线特征存储库
  • sosdp
  • 快速了解BERT
  • 在线Deflate压缩工具(支持添加zlib头及无zlib头模式)
  • 第14节-增强表结构-ALTER-TABLE
  • Ubuntu之apt更新源
  • T527 IR-RX 调试
  • 低成本能谱仪设计:基于分立器件的模拟前端与数字后端实现方案
  • 计算机视觉的数据收集与标注
  • LeetCode:92.最小路径和
  • 百度竞价推广属于什么广告广东网站se0优化公司
  • Anaconda路径配置
  • GitHub 热榜项目 - 日榜(2025-10-05)
  • java中Math.random()和random()方法区别
  • Django SimpleUI 详解:现代化的Django Admin界面美化方案
  • 网站开发客户流程 6个阶段简述常用的网站开发软件
  • 区块链分层学:新的开始