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

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;}
};

相关文章:

  • 西瓜书第十一章——降维与度量学习
  • π0论文阅读
  • SpringAI(GA):RAG下的ETL快速上手
  • LeetCode - 100. 相同的树
  • 力扣上C语言编程题
  • Golang——3、流程控制语句
  • 2024年12月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 嵌入式硬件篇---蜂鸣器
  • Java基础 Day27
  • DAY 18 推断聚类后簇的类型
  • svg实现常见伪3D效果
  • MySQL优化全链路实践:从慢查询治理到架构升级
  • 使用ReactNative加载HarmonyOS Svga动画
  • 算法打开13天
  • 多任务——进程
  • 1857. 有向图中最大颜色值
  • 前端面经 响应式布局
  • GitHub 趋势日报 (2025年05月31日)
  • Git 入门学习教程
  • day 1 任务以及具体安排:第一章 数组part01
  • 企业自适应网站建设/google adsense
  • 免费数据库网站空间/工具seo
  • 巴中网站建设公司/百度新闻app
  • 台州卫浴网站建设/谷歌浏览器安卓版下载
  • 网站正能量视频不懂我意思吧/风云榜百度
  • 佛山市城市建设工程有限公司/北京整站线上推广优化