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

79. Word Search

题目描述

79. Word Search

回溯

代码一,使用used数组

class Solution {vector<pair<int,int>> directions{{0,1},{0,-1},{1,0},{-1,0}};vector<vector<bool>> used;
public:bool exist(vector<vector<char>>& board, string word) {used.resize(board.size(),vector<bool>(board[0].size(),false));for(int i = 0;i < board.size();i++){for(int j = 0;j < board[i].size();j++){if(board[i][j] != word[0] || used[i][j] == true)continue;used[i][j] = true;if(backtrack(board,word,1,i,j))return true;used[i][j] = false;}}return false;}bool backtrack(vector<vector<char>>& board, string &word,int idx,int row,int col){if(idx == word.size())return true;for(const auto& dir: directions){int newrow = row+dir.first;int newcol = col+dir.second;if(newrow<0 || newrow>=board.size() || newcol<0 || newcol>= board[0].size())continue;if(used[newrow][newcol])continue;if(board[newrow][newcol] == word[idx]){used[newrow][newcol] = true;if(backtrack(board,word,idx+1,newrow,newcol))return true;used[newrow][newcol] = false;}}return false;}
};

代码二,不使用used数组

class Solution {vector<pair<int,int>> directions{{0,1},{0,-1},{1,0},{-1,0}};
public:bool exist(vector<vector<char>>& board, string word) {for(int i = 0;i < board.size();i++){for(int j = 0;j < board[i].size();j++){if(board[i][j] != word[0])continue;board[i][j] = '#';//word仅由大小写英文字母组成,将board[i][j]标记为#表示board[i][j]已经被使用if(backtrack(board,word,1,i,j))return true;board[i][j] = word[0];//恢复原字符}}return false;}bool backtrack(vector<vector<char>>& board, string &word,int idx,int row,int col){if(idx == word.size())return true;for(const auto& dir: directions){int newrow = row+dir.first;int newcol = col+dir.second;if(newrow<0 || newrow>=board.size() || newcol<0 || newcol>= board[0].size())continue;if(board[newrow][newcol] == word[idx]){board[newrow][newcol] = '#';if(backtrack(board,word,idx+1,newrow,newcol))return true;board[newrow][newcol] = word[idx];//恢复原字符}}return false;}
};
http://www.lryc.cn/news/2400866.html

相关文章:

  • 结构性设计模式之Facade(外观)设计模式
  • ICML 2025 Spotlight | 机器人界的「Sora」!让机器人实时进行未来预测和动作执行!
  • CSP严格模式返回不存在的爬虫相关文件
  • https(SSL)证书危机和可行的解决方案
  • C#获取磁盘容量:代码实现与应用场景解析
  • 2359. 找到离给定两个节点最近的节点
  • 前端导入Excel表格
  • AI生态警报:MCP协议风险与应对指南(下)——MCP Host安全
  • 基于VLC的Unity视频播放器(四)
  • pixel刷入Android15 userdebug版本
  • 【Go-补充】ioReader + ioWriter + bufio
  • leetcode 3403. 从盒子中找出字典序最大的字符串 I 中等
  • C# 一个解决方案放一个dll项目,一个dll测试项目 ,调试dll项目的源码
  • 【PmHub面试篇】PmHub 整合 TransmittableThreadLocal(TTL)缓存用户数据面试专题解析
  • unity随机生成未知符号教程
  • 基于RK3576+FPGA+AI工业控制器的工地防护检测装备解决方案
  • 推荐一款PDF压缩的工具
  • 混沌映射(Chaotic Map)
  • MySQL对数据库用户的操作
  • 《PyTorch Hub:解锁深度学习模型的百宝箱》
  • 数据结构 堆与优先级队列
  • Leetcode 3569. Maximize Count of Distinct Primes After Split
  • 用好 ImageFX,解锁游戏素材生成新姿势:从入门到进阶
  • unix/linux,sudo,其基本属性、语法、操作、api
  • 文本内容变化引起布局尺寸变化 导致的 UI 适配问题
  • 01-Redis介绍与安装
  • 十六、【前端强化篇】完善 TestCase 编辑器:支持 API 结构化定义与断言配置
  • Kafka broker 写消息的过程
  • VR博物馆推动现代数字化科技博物馆
  • Python爬虫之数据提取