穷举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;
    }
}
相关推荐
隔壁大炮1 小时前
Day07-RNN介绍
人工智能·pytorch·rnn·深度学习·神经网络·算法·numpy
WL_Aurora1 小时前
Python 算法基础篇之什么是算法
python·算法
墨染天姬2 小时前
[AI]DeepSeek-R1的GRPO算法
人工智能·算法·php
D_C_tyu2 小时前
JavaScript | 数独游戏核心算法实现
javascript·算法·游戏
qiqsevenqiqiqiqi2 小时前
MT2048三连 暴力→数学推导→O (n) 优化
数据结构·c++·算法
码之气三段.2 小时前
十五届山东ccpc省赛补题(update)
数据结构·c++·算法
AI科技星2 小时前
ELN 升级:π 级数自动生成器全域数理架构
大数据·人工智能·python·算法·金融
强盛机器学习~2 小时前
2026年SCI一区新算法-傅里叶变换优化算法(FTO)-公式原理详解与性能测评 Matlab代码免费获取
算法·matlab·进化计算·群体智能·傅里叶变换·元启发式算法
王老师青少年编程2 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【跳跃与过河问题】:过河问题
c++·算法·贪心·csp·信奥赛·跳跃与过河问题·过河问题