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;
    }
    
  • 相关阅读:
    js调用后台方法
    Js 实现trim方法
    Service获取客户端IP地址(java)
    ASP.NET中页面传值
    Asp.net 实现选择文件批量下载
    js调用后台代码
    获取webservice客户端IP地址 (C# java )
    使 WebBrowser 更简单的新加和执行 js, 可安装 jQuery 脚本的 C# 开源代码 IEBrowse...
    Mac下各种网络命令的使用
    Java关键字
  • 原文地址:https://www.cnblogs.com/yjxyy/p/11111163.html
Copyright © 2011-2022 走看看