zoukankan      html  css  js  c++  java
  • 回溯---在矩阵中寻找字符串

    在矩阵中寻找字符串

    79. Word Search (Medium)

    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.
    

    题目描述:

      请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。

    思路分析:

      回溯法解决,从矩阵中一个点开始,如果该点的值等于字符串中第一个值,那么接下来我们可以从该点的左上右下节点继续搜索。但是不能重复遍历,如果最终能找到一条字符串中的路径那么返回true,如果不能返回false。

    代码:

    public boolean exist(char[][]board,String word){
        if(board==null||board.length==0)
            return false;
        if(word==null||word.length()==0)
            return true;
        int m=board.length;
        int n=board[0].length;
        boolean[][]flag=new boolean[m][n];
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(backtracking(0,i,j,board,word,flag))
                    return true;
            }
        }
        return false;
    }
    public boolean backtracking(int k,int i,int j,char[][]board,String word,boolean[][]flag){
        if(k==word.length())
            return true;
        if(i<0||i>=board.length||j<0||j>=board[0].length||flag[i][j]==true||word.charAt(k)!=board[i][j])
            return false;
        flag[i][j]=true;
        if(backtracking(k+1,i+1,j,board,word,flag)||backtracking(k+1,i-1,j,board,word,flag)||backtracking(k+1,i,j+1,board,word,flag)||backtracking(k+1,i,j-1,board,word,flag))
            return true;
        flag[i][j]=false;
        return false;
    }
    
  • 相关阅读:
    PID算法控制直流电机笔记
    HAL库直流电机编码测速(L298N驱动)笔记
    HAl库控制L298N直流电机旋转笔记
    MQTT介绍与使用(转载)
    STM32中STD、HAL、LL库比较
    rpm检验是否被改动过
    find命令 参数
    会话管理测试时的注意点
    无权限修改用户组权限的状况一
    burpsuite + sqlmap 日志导出批量扫描
  • 原文地址:https://www.cnblogs.com/yjxyy/p/11111163.html
Copyright © 2011-2022 走看看