zoukankan      html  css  js  c++  java
  • 单词搜索 递归

    题目:

      

     思路:

      递归

      从每一个位置出发,向上下左右走 与目标数据进行对比

      边界条件 是否越界 是否相等

      注意: 走过的路不能走,  走过的路用 * 或其他非字母标记,

             递归回来的时候记得 还原为原来的数据,否则回来时,一直会走false


     (一)代码

    class Solution {
    
        public boolean exist(char[][] board, String word) {
    
            //遍历每一个格子,让其往四个方向走,四个方向的结果取或,如果走不通就返回false
            char arr[] = word.toCharArray();
            for(int i = 0; i < board.length; i ++) {
                for(int j = 0; j < board[0].length; j ++) {
                    if(board[i][j] == arr[0] && dfs(board,arr,i,j,0))
                        return true;
                }
            }
            return false;
    
        }
    
        public boolean dfs(char[][] board,char[] arr,int i,int j,int k) {
    
            //判断是否越界  或者 是否走过的路
            if(i < 0 || i > board.length - 1 || j < 0 || j > board[0].length - 1 || board[i][j] != arr[k]){
                return false;
            }
            //找到了完整的路径
            if(k == arr.length - 1){
                return true;
            }
    
            //暂存i j 位置数据
            char temp = board[i][j];
            //走过的位置,标记字符
            board[i][j] = '*';
            //上下左右移动
            boolean res = dfs(board,arr,i-1,j,k+1) ||
                          dfs(board,arr,i,j-1,k+1) ||
                          dfs(board,arr,i+1,j,k+1) ||
                          dfs(board,arr,i,j+1,k+1);
    
            //递归结束还原原有数据, 否则会一直进false
            board[i][j] = temp;
    
            return res;
        }
    
    }

            下了非常大的雨,坐公交来的

                

                  好困

        沉迷股市,但赚不上钱,来来回回一场空,但还是要玩。  — - —

  • 相关阅读:
    preflight
    vs调试的时候,加载dll非常慢的解决方法
    chrome blink render engine and the render mechanism
    Cache-control demestified
    IE文档模式和兼容模式
    canvas和SVG分析比较
    打败 IE 的葵花宝典:CSS Bug Table
    vi 编辑器
    JS高级 1
    特效四大家族
  • 原文地址:https://www.cnblogs.com/misscai/p/15002065.html
Copyright © 2011-2022 走看看