您的位置:首页 > 游戏 > 手游 > 学创杯营销之道模板_腾虎网络广州网站建设_最近三天的新闻大事摘抄_站长平台

学创杯营销之道模板_腾虎网络广州网站建设_最近三天的新闻大事摘抄_站长平台

2025/5/9 16:28:23 来源:https://blog.csdn.net/Kimsanmyeong/article/details/146378673  浏览:    关键词:学创杯营销之道模板_腾虎网络广州网站建设_最近三天的新闻大事摘抄_站长平台
学创杯营销之道模板_腾虎网络广州网站建设_最近三天的新闻大事摘抄_站长平台

1.题目

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

2.代码及解析

这个就涉及dfs了 和前面的棋盘那个差不多 我的思路对了一半 用了dfs+回溯 但是我忘了写回溯

一开始一直不通过 用visit来代表是否遍历过

class Solution {

    bool ans;

    bool dfs(vector<vector<char>>& board, int i, int j,vector<vector<bool>>&visited,string word,int index) {

        if(board.size()*board[0].size()< word.size()){

            return false;

        }

        if (i ==board.size() || i < 0) {

            return false;

        }

        if (j ==board[0].size() || j < 0) {

            return false;

        }

        if(index==word.size()){

            return true;

        }

        if (board[i][j] != word[index]|| visited[i][j]){

            return false;

        }

            visited[i][j]=true;

            bool ans=dfs(board, i + 1, j,visited,word,index+1)||dfs(board, i - 1, j,visited,word,index+1)||dfs(board, i, j + 1,visited,word,index+1)||dfs(board, i, j - 1,visited,word,index+1);

            visited[i][j]=false;

            return ans;

    }

public:

    bool exist(vector<vector<char>>& board, string word) {

        bool res;

        int m = board.size();    // 行数

        int n = board[0].size(); // 列数

        if(board.size()==1&&board[0][0]==word[0]&&word.size()==1){

            return true;

        }

        // 初始化 visited 数组,大小为 m x n,初始值为 false

        vector<vector<bool>> visited(m, vector<bool>(n, false));

        for(int i=0;i<board.size();i++){

            for(int j=0;j<board[0].size();j++){

                if(dfs(board,i,j,visited,word,0)) return true;

            }

        }

        return false;

    }

};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com