首页 > 编程语言 >79. 单词搜索-c++

79. 单词搜索-c++

时间:2024-05-08 16:24:02浏览次数:20  
标签:word backtrack int 单元格 c++ 单词 board 79 size

给定一个 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:
    bool exist(vector<vector<char>>& board, string word) {
        int x=board.size();
        int y=board[0].size();
        for(int i=0;i<x;i++)
        {
            for(int j=0;j<y;j++)
            {
                if(backtrack(board,word,i,j,0))
                {
                    return true;
                }
            }
        }
        return false;
    }
    bool backtrack(vector<vector<char>>& board, string word,int i,int j,int k)
    {
        if(k==word.size())
        {
            return true;
        }
        if(i<0||j<0||i>=board.size()||j>=board[0].size()||board[i][j]!=word[k])
        {
            return false;
        }
        char a=board[i][j];
        board[i][j]='\0';
        bool re=(backtrack(board,word,i-1,j,k+1)||
        backtrack(board,word,i+1,j,k+1)||
        backtrack(board,word,i,j+1,k+1)||
        backtrack(board,word,i,j-1,k+1));

        board[i][j]=a;
        return re;
    }
};

标签:word,backtrack,int,单元格,c++,单词,board,79,size
From: https://www.cnblogs.com/donghao99/p/18180121

相关文章

  • C++基础-如何引入第三方静态库、动态库或自定义库 摘自 https://blog.csdn.net/u01310
    C++无论是内置库还是第三方库,都需要自己手动进行查找、配置、引入等工作。本文即是帮助完成C++项目对于库、框架如何完成依赖引入达成可调用的目的,重点讲述开发工具VisualStudio中的操作静态库(.lib)静态库引入适用用于大部分无开源的第三方库,开发者不需要关心库的具体实现如何,......
  • UEC++做拖拽时的UDragDropOperation 的PayLoad是什么
    在UnrealEngine中,使用C++进行拖拽操作时,UDragDropOperation类的Payload成员变量允许你传递与拖拽操作相关的任何类型的数据。它通常被用来存储一些关于被拖拽元素的信息,这些信息在拖拽开始时被设置,然后可以在拖拽结束时被检索和使用。Payload是一个UObject*类型的指针,这意......
  • 在UEC++中的FReply
    在UnrealEngine中,FReply是一个核心类,用于在UI事件处理中返回和控制事件的传播。它主要用于SlateUI框架,是处理输入事件(如点击、拖拽、鼠标移动等)时的回应类型。FReply用于告诉Slate事件系统一个特定的事件是否被处理,以及是否应该将事件继续传递给其他控件。例如,当一个按钮被点......
  • C++容器
    C++容器bitset构造函数//1.默认构造函数:0bitset<10>a; //a:0000000000//2.用一个数值初始化//(1)当用一个数值去构造的时候,其实就是将数值在内存中的存储方式显示出来。(数值在内存中是以补码形式存储的)//(2)若bitset的位数n小于数值的位数,只取数值(小端的)前n位......
  • c++ 模板模板参数("Template Template Parameters")
    #include<iostream>#include<vector>#include<list>usingnamespacestd;namespace_nmsp1{//T类型模板参数,代表容器中元素类型//Container代表的不是一个类型(不能是一个类型模板参数),而是一个类模板(类名)//Container不叫做类型模板参数,而叫做模板模......
  • C++ keywords
     一、C++98及以前  二、C++111.alignofa.简介:是一个运算符,用于确定类型的对齐要求。b.语法:i.alignof(type_id/object)       c.返回值:i.std::size_t        // 返回指定类型或......
  • 【初中英语提分神器】中考高频词汇大全003-D开头单词高频,轻松掌握,考试无忧!速来围观!
    PDF格式公众号回复关键字:ZKGCH003D开头单词高频动词1decide决定”或“判定We'llhavetodecidewhattodonext.(我们必须决定下一步该做什么。)Thejudgedecidedinfavorofthedefendant.(法官判定被告胜诉。)2dislike/hatedislike不喜欢Hedislikesbeingl......
  • [18] C++虚幻引擎功能拓展
    Day1添加轴动作EAxis::Type//轴方向枚举//旋转输入轴UInputModifierSwizzleAxis*SwizzleAxis=NewObject<UInputModifierSwizzleAxis>(MappingContext);KeyMapping.Modifiers.Add(SwizzleAxis);//取反输入轴UInputModifierNegate*Negate=NewObject<UInputModifierNe......
  • 背单词 首字母 2024年05月
    2024-05-312024-05-302024-05-292024-05-282024-05-272024-05-262024-05-252024-05-242024-05-232024-05-222024-05-212024-05-202024-05-192024-05-182024-05-172024-05-162024-05-152024-05-142024-05-132024-05-122024-05-112024-05-102024-05-092024-05-082024-05-072024-......
  • 英语背单词 专四词汇 2024年04月 ChatGPT
    2024-05-312024-05-302024-05-292024-05-282024-05-272024-05-262024-05-252024-05-242024-05-232024-05-222024-05-212024-05-202024-05-192024-05-182024-05-172024-05-162024-05-152024-05-142024-05-132024-05-122024-05-112024-05-102024-05-092024-05-082024-05-072024-......