zoukankan      html  css  js  c++  java
  • *Word Search & by using 回溯法模板

    Given a 2D board and a word, find if the word exists in the grid.

    The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once.

    For example,
    Given board =

    [
      ['A','B','C','E'],
      ['S','F','C','S'],
      ['A','D','E','E']
    ]
    

    word = "ABCCED", -> returns true,
    word = "SEE", -> returns true,
    word = "ABCB", -> returns false

     1 public class Solution {
     2     // recursion
     3     public boolean exist(char[][] board, String word) {
     4         if(board == null || board.length == 0)
     5             return false;
     6         if(word.length() == 0)
     7             return true;
     8         
     9         for(int i = 0; i< board.length; i++){
    10             for(int j=0; j< board[0].length; j++){
    11                 if(board[i][j] == word.charAt(0)){
    12                     
    13                     boolean rst = find(board, i, j, word, 0);
    14                     if(rst)
    15                         return true;
    16                 }
    17             }
    18         }
    19         return false;
    20     }
    21     
    22     private boolean find(char[][] board, int i, int j, String word, int start){
    23         if(start == word.length())
    24             return true;
    25         
    26         if (i < 0 || i>= board.length || 
    27      j < 0 || j >= board[0].length || board[i][j] != word.charAt(start)){
    28             return false;
    29      }
    30         
    31         board[i][j] = '@'; // should remember to mark it
    32         boolean rst = (find(board, i-1, j, word, start+1) 
    33 || find(board, i, j-1, word, start+1) 
    34 || find(board, i+1, j, word, start+1) 
    35 || find(board, i, j+1, word, start+1));
    36         board[i][j] = word.charAt(start);
    37         return rst;
    38     }
    
                                                                                    


  • 相关阅读:
    dede图片横向滚动
    dede各种运用[转]
    PROFIBUS-DP现场总线的结构及应用
    51单片机的中断优先级及中断嵌套
    WPF里面制作圆角文本框
    【转】什么叫51单片机最小系统
    【转】(C#)OPC客户端源码
    路漫漫其修远兮,吾要上下左右前后而求索
    二叉树创建为什么用二级指针
    无向图的邻接表创建
  • 原文地址:https://www.cnblogs.com/hygeia/p/4922266.html
Copyright © 2011-2022 走看看