• 矩阵中的路径


    深度优先

    class Solution {
        public boolean exist(char[][] board, String word) {
           char[] words = word.toCharArray();
           int m = words.length;
           boolean[][] visit = new boolean[board.length][board[0].length];
           for(int i=0;i<board.length;i++){
               for(int j=0;j<board[0].length;j++){
                   if(board[i][j] == words[0]){//找到起始位置
                       if(dfs(i,j,visit,0,board,words)) return true;
                   }
               }
           }
           return false;
        }
        private boolean dfs(int i,int j,boolean[][]visit, int index,char[][]board,char[] words){
            if(index == words.length) return true;
            if(i < 0 || i >= board.length || j < 0 || j >= board[0].length
            || board[i][j] != words[index] || visit[i][j]){
                return false;
            }
            visit[i][j] = true;
            boolean flag = dfs(i+1,j,visit,index+1,board,words)//四个方向尝试
                         ||dfs(i,j+1,visit,index+1,board,words)
                         ||dfs(i-1,j,visit,index+1,board,words)
                         ||dfs(i,j-1,visit,index+1,board,words);
            visit[i][j] = false;
            return  flag;   
    
        }
    }
    
    
  • 相关阅读:
    在普通类中调用service
    layui util 工具时间戳转换
    最大值
    药房管理
    线段树2
    线段树1
    Dijkstra
    最大值最小化
    图的M 着色问题
    取余运算
  • 原文地址:https://www.cnblogs.com/cstdio1/p/13397130.html
Copyright © 2020-2023  润新知