leetcode-79:单词搜索

简介: leetcode-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

解题

方法一:回溯

class Solution {
public:
    vector<vector<int>> dirs={{1,0},{-1,0},{0,1},{0,-1}};
    vector<vector<bool>> visit;
    bool dfs(vector<vector<char>>& board,string& word,int index,int x,int y){
        if(index==word.size()) return true;
        if(x<0||x>=board.size()||y<0||y>=board[0].size()) return false;
        if(visit[x][y]) return false;
        char c=word[index];
        if(board[x][y]!=c) return false;
        for(vector<int>& dir:dirs){
            int nx=x+dir[0];
            int ny=y+dir[1];
            visit[x][y]=true;
            if(dfs(board,word,index+1,nx,ny)) return true;
            visit[x][y]=false;
        }
        return false;
    }
    bool exist(vector<vector<char>>& board, string word) {
        for(int i=0;i<board.size();i++){
            for(int j=0;j<board[0].size();j++){
                visit=vector<vector<bool>>(board.size(),vector<bool>(board[0].size(),false));
                if(dfs(board,word,0,i,j)) return true;
            }
        }
        return false;
    }
};
相关文章
|
4月前
leetcode-212:单词搜索 II
leetcode-212:单词搜索 II
22 0
|
9月前
|
机器学习/深度学习 人工智能 算法
启发式搜索 (Heuristically Search)-【贪婪最佳优先搜索】和【A*搜索】
启发式搜索 (Heuristically Search)-【贪婪最佳优先搜索】和【A*搜索】
389 0
|
9月前
|
算法
字符矩阵内单词搜索
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
40 0
|
10月前
|
算法
回溯与搜索 一 全排列问题
回溯与搜索 一 全排列问题
|
移动开发 算法
秒懂算法 | A*搜索
本篇内容包括了A*搜索算法的原理精解以及2个例题。
268 1
秒懂算法 | A*搜索
每日三题-子集、单词搜索、删除无效的括号
每日三题 子集 单词搜索 删除无效的括号
59 1
每日三题-子集、单词搜索、删除无效的括号
|
算法 Java C++
LeetCode(算法)- 79. 单词搜索
LeetCode(算法)- 79. 单词搜索
66 0
|
算法
重温算法之单词搜索
对于回溯算法大家都不陌生,为此还有题友写成了回溯算法的模板,只要按模板套题都能灵活解题,算是开辟了一种做题的方式吧,有的算法题还是很磨人的。
115 0
重温算法之单词搜索
|
算法 前端开发 程序员
「LeetCode」79-单词搜索⚡️
「LeetCode」79-单词搜索⚡️
107 0
「LeetCode」79-单词搜索⚡️
Leetcode79单词搜索(深度遍历解法)
Leetcode79单词搜索(深度遍历解法)
98 0