《末日地帶:與世隔絕-倖存者版》登陸次世代主機 5月19日上線
阿新 • • 發佈:2022-03-01
package leetcode; public class offer_12 { //設定全域性變數 int flag=0; public boolean exist(char[][] board, String word) { if(board==null) {return false;} int height=board.length; int width=board[0].length; //設定一個訪問資料,防止重複尋找 int[][] visited=new int[height][width];for(int i=0;i<height;i++) { for(int j=0;j<width;j++) { backtrack(board,i,j,word,0,visited); if(flag==1) {return true;} } } return false; } public void backtrack(char[][] board,int i,int j,String word,int length,int[][] visited) { if(visited[i][j]==0) { if(board[i][j]==word.charAt(length)) { length=length+1; visited[i][j]=1; //如果找到全部對應的word就返回 if(length==word.length()) { flag=1; return; }//向上找 if(flag==0&&i>0) { backtrack(board, i-1, j, word, length,visited); } //向下找 if(flag==0&&i<board.length-1) { backtrack(board, i+1, j, word, length,visited); } //想左找 if(flag==0&&j>0) { backtrack(board, i, j-1, word, length,visited); } //向右找 if(flag==0&&j<board[0].length-1) { backtrack(board, i, j+1, word, length,visited); } visited[i][j]=0; } } } public static void main(String[] args) { // TODO Auto-generated method stub offer_12 off=new offer_12(); char[][] board= { {'A','B','C','E'}, {'S','F','C','S'}, {'A','D','E','E'} }; System.out.println(off.exist(board, "ABCCED")); } }