穷举vs暴搜vs深搜vs回溯vs剪枝系列一>单词搜索

题解如下

题目:

解析

决策树:

代码设计:

代码:

java 复制代码
class Solution {
    private boolean[][] visit;//标记使用过的数据
    int m,n;//行,列
    char[] word;

    public boolean exist(char[][] board, String _word) {
        m = board.length;
        n = board[0].length;
        visit = new boolean[m][n];
        word = _word.toCharArray();

        for(int i = 0; i < m; i++)
            for(int j = 0; j < n; j++){
                if(word[0] == board[i][j]){
                    visit[i][j] = true;
                    if(dfs(board,i,j,1)) return true;
                    visit[i][j] = false;//恢复现场
                }
            }
        return false;    
    }

    int[] dx = {0,0,-1,1};
    int[] dy = {-1,1,0,0};


    boolean dfs(char[][]board, int i, int j, int pos){
        if(pos == word.length){
            return true;//搜索成功
        }

        for(int k = 0; k < 4; k++) {
            int x = i + dx[k]; 
            int y = j + dy[k];

            if(x >= 0 && x < m && y >= 0 && y < n && !visit[x][y] && word[pos] == board[x][y]){
                visit[x][y] = true;
                if(dfs(board,x,y,pos+1)) return true;
                visit[x][y] = false;//恢复现场
            }
        }

        return false;
    }
}
相关推荐
小白程序员成长日记42 分钟前
2025.11.29 力扣每日一题
数据结构·算法·leetcode
在黎明的反思2 小时前
进程通信之消息队列(IPC)
算法
老鱼说AI2 小时前
算法基础教学第一步:数据结构
数据结构·python·算法
Jing_Rainbow2 小时前
【LeetCode Hot100 刷题日记(19/100)】54. 螺旋矩阵 —— 数组、矩阵、模拟、双指针、层序遍历🌀
算法·面试·程序员
地平线开发者3 小时前
征程 6 | linear 高精度输出配置方式
算法·自动驾驶
小尧嵌入式4 小时前
C++基础语法总结
开发语言·c++·stm32·单片机·嵌入式硬件·算法
white-persist4 小时前
【攻防世界】reverse | IgniteMe 详细题解 WP
c语言·汇编·数据结构·c++·python·算法·网络安全
稚辉君.MCA_P8_Java4 小时前
Gemini永久会员 归并排序(Merge Sort) 基于分治思想(Divide and Conquer)的高效排序算法
java·linux·算法·spring·排序算法
地平线开发者4 小时前
征程 6 | QAT 新版 qconfig 量化模板使用教程
算法·自动驾驶
多恩Stone4 小时前
【ModelScope-1】数据集稀疏检出(Sparse Checkout)来下载指定目录
人工智能·python·算法·aigc