首页 > 其他分享 >79. 单词搜索

79. 单词搜索

时间:2024-11-15 20:18:30浏览次数:1  
标签:index word int next 单词 搜索 board ans 79

  1. 题目链接

  2. 解题思路

    • 一道回溯的题目。
    • 我现在在[i, j],然后处理到单词的index位置,index之前的都已经解决了,现在要往哪走?很明显如果[i + 1, j]的位置等于index的单词,我可以去「试试」能不能走通。所以其实很简单,每当来到[i, j],单词index,我就看上下左右四个位置,如果和index的位置相等,就可以去试试。如果上下左右都不行,那就说明「此路不通」,这一次的尝试失败了。
    • 有一个细节,我怎么能够「不走回头路」?很简单,我走过的位置,就把其变成一个不可能的字母,比如255。
  3. 代码

    class Solution {
    public:
    
        vector<vector<int>> dir{{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
    
        // 当前在[i, j]   来到了单词的index位置
        bool process(vector<vector<char>>& board, string &word, int index, int i, int j, const int n, const int m) {
            if (index == word.size()) {
                return true;
            }
            // 这个for循环其实就是上下左右四个方向尝试
            for (int k = 0; k < 4; ++k) {
                int next_i = i + dir[k][0];
                int next_j = j + dir[k][1];
                bool ans = false;
                if (next_i >= 0 && next_i < n && next_j >= 0 && next_j < m && board[next_i][next_j] == word[index]) {
                    board[next_i][next_j] = 250;    // 标记我已经走过了
                    ans = process(board, word, index + 1, next_i, next_j, n, m);
                    board[next_i][next_j] = word[index];   // 不要忘记恢复回来
                }
                if (ans) {
                    return true;
                }
            }
            return false;
    
        }
    
        bool exist(vector<vector<char>>& board, string word) {
            int n = board.size();
            int m = board[0].size();
            for (int i = 0; i < n; ++i) {
                for (int j = 0; j < m; ++j) {
                    bool ans = false;
                    if (board[i][j] == word[0]) {
                        board[i][j] = 250;
                        ans = process(board, word, 1, i, j, n, m);
                        board[i][j] = word[0];
                    }
                    if (ans) {
                        return true;
                    }
                }
            }
            return false;
        }
    };
    

标签:index,word,int,next,单词,搜索,board,ans,79
From: https://www.cnblogs.com/ouyangxx/p/18548598

相关文章

  • Toyota Programming Contest 2024#11(AtCoder Beginner Contest 379)题解总结
    AtCoderBeginnerContest379Rated:\(770\)A-Cyclic简单模拟。B-Strawberries字符串模拟,substr函数秒了C-Repeating中等模拟。思路:判断是否合法很简单,重点在计算花费。假设我们是\(0\)号点有\(N\)个棋子,然后移动到每个点上,显然花费为\(\frac{N(N+1)}{......
  • AtCoder Beginner Contest 379
    省流版A.模拟即可B.贪心,有\(k\)个就吃,模拟即可C.维护已经有棋子的格子,有多个棋子往右推,代价等差数列求和,模拟即可D.注意到植物高度=当前天-种植天,维护植物的种植天然后二分找对应高度的植物即可E.考虑最终答案每一个数位的值,然后处理进位即可F.单调栈处理建筑\(r\)......
  • 98. 验证二叉搜索树
    题目链接解题思路这种二叉树的题目,绝大部分可以用「二叉树的递归套路」来解决,那么什么是「二叉树的递归套路」?其实就是每个节点会有信息,该节点信息怎么来的?左儿子的信息+右儿子的信息,然后加工成自己的信息。根结点是否是搜索二叉树?需要左儿子和右儿子给什么信息?首先......
  • 如何使用混合搜索来查找电子商务产品目录
    作者:来自Elastic AndreLuiz了解如何使用混合搜索来构建电子商务产品目录,使用分面、促销、个性化和行为分析。在本文中,我们将演示如何实现将全文搜索的结果与向量搜索相结合的混合搜索。通过统一这两种方法,混合搜索可以扩大结果的广度,充分利用两种搜索策略的优势。除了......
  • zblogphp判断首页、列表页、内容页、单页、搜索页、tag页的代码
    判断代码示例{if$type=='index'&&$page=='1'}/*判断首页*/{if$type=='category'}/*判断分类页*/{if$type=='article'}/*判断内容页*/{if$type=='page'}/*判断独立页面*/{if$type=='author'}/*判断用户页*......
  • Atcoder Beginner Contest 379 (A-F)
    AtcoderBeginnerContest379(A-F)题目链接A-Cyclic#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;voidShowball(){chara,b,c;cin>>a>>b>>c;cout<<b<<c<<a<<""<......
  • 代码随想录算法训练营第一天| 704. 二分查找、35.搜索插入位置、27. 移除元素、977.有
    文档讲解:代码随想录视频讲解:代码随想录状态:完成4道题一、数组理论基础数组:连续内存空间,存储类型相同的元素集合,适合读不适合写注意:Python里可以存储不同类型的元素,但刷题时都是按照相同元素去做的相同元素占用存储的空间大小是一样的,下一个元素的位置就确定了数组时间......
  • 整数二分查找 leetcode35. 搜索插入位置 leetcode704. 二分查找
    这两道题的本质是一样的,都是整数二分查找。题目给出的条件比较强,序列是严格单调递增的。但是我这个即使序列存在重复的元素也可以满足需求35.搜索插入位置classSolution{public:intsearchInsert(vector<int>&nums,inttarget){intsize=nums.size();......
  • linux系统so动态库的搜索路径
    so动态库的搜索路径搜索的先后顺序编译目标代码时指定的动态库搜索路径环境变量LD_LIBRARY_PATH指定的动态库搜索路径配置文件/etc/ld.so.conf中指定的动态库搜索路径默认的动态库搜索路径/lib默认的动态库搜索路径/usr/libgcc编译指定动态库搜索路径-Wl,-rpath=<动态库......
  • 手把手教你用Coze零代码搭建一个智能搜索智能体,高时效性、保姆级!
    随着大模型技术的发展,越来越多的技术开始涌现,从聊天助手,到智能体,再到工作流,最后到三者的整合。大模型技术朝着更加智能化、通用化、个性化的方向发展,为人们的生活和工作带来了更多的便利和创新。今天,手把手教大家如何通过Coze零代码搭建一个智能搜索智能体,能够根据你的关键......