Leetcode 79. Word Search 要真正理解回溯的写法!

来源:互联网 发布:乌海四中网络选课系统 编辑:程序博客网 时间:2024/06/15 07:04

Leetcode 79. Word Search 



public class Solution {public static void main(String[] args){char[][] board = {{'A','B','C','E'},{'S','F','E','S'},{'A','D','E','E'}};Solution s = new Solution();s.exist(board, "ABCESEEEFS");}    public boolean exist(char[][] board, String word) {        char start = word.charAt(0);        int m = board.length;        if(m==0) return false;        int n = board[0].length;                int[][] used = new int[m][n];                        boolean res = false;                for(int i=0;i<m;i++){            for(int j=0;j<n;j++){                if(board[i][j]==start){                     boolean tmp = backtrack(board,word,start,m,n,0,i,j,used);                     used[i][j] = 0;//back!                     if(tmp)  return true;                }            }        }                return res;    }        public boolean backtrack(char[][] board, String word,char start,int m,int n,int idx,int i,int j,int[][] flag){        flag[i][j] = 1;        if(idx==word.length()-1)  return true;        idx++;        start = word.charAt(idx);        boolean res = false;                if(i-1>=0&&flag[i-1][j]!=1&&board[i-1][j]==start)     {//up            boolean tmp = backtrack(board,word,start,m,n,idx,i-1,j,flag);             flag[i-1][j] = 0;            if(tmp)  return true;        }                if(i+1<m&&flag[i+1][j]!=1&&board[i+1][j]==start){   //down            boolean tmp = backtrack(board,word,start,m,n,idx,i+1,j,flag);            flag[i+1][j] = 0;            if(tmp)  return true;        }                if(j-1>=0&&flag[i][j-1]!=1&&board[i][j-1]==start){   //left            boolean tmp = backtrack(board,word,start,m,n,idx,i,j-1,flag);            flag[i][j-1] = 0;            if(tmp)  return true;        }                if(j+1<n&&flag[i][j+1]!=1&&board[i][j+1]==start){   //right            boolean tmp = backtrack(board,word,start,m,n,idx,i,j+1,flag);            flag[i][j+1] = 0;            if(tmp)  return true;        }                return res;    }}


0 0
原创粉丝点击