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

    package algorithms;
    
    import java.util.Arrays;
    
    public class Exp3_2 {
        private int pathLength;
        private int rows;
        private int cols;
        private boolean[][] visited;
        char[] wordArray;
    
        public boolean exist(char[][] board, String word) {
            if (board == null)
                return false;
    
            rows = board.length;
            cols = board[0].length;
            // 记录该元素是否已经被访问过了
            visited = new boolean[rows][cols];
            for(int i=0;i<rows;i++)
                Arrays.fill(visited[i], false);
            wordArray = word.toCharArray();
            pathLength = 0;
    
            for (int i = 0; i < rows; i++)
                for (int j = 0; j < cols; j++) {
                    if (findPath(board, i, j)) {
                        return true;
                    }
                }
            return false;
        }
    
        private boolean findPath(char[][] board, int i, int j) {
            boolean flag = false;
            if (pathLength == wordArray.length)
                return true;
            if (i >= 0 && i < rows && j >= 0 && j < cols && board[i][j] == wordArray[pathLength]
                    && visited[i][j] == false) {
                pathLength++;
                visited[i][j] = true;
                flag = findPath(board, i+1, j) || findPath(board, i-1, j) || findPath(board, i, j+1)
                        || findPath(board, i, j-1);
                if (!flag) {
                    pathLength--;
                    visited[i][j] = false;
                }
            }
            return flag;
        }
        
        public static void main(String[] args) {
            char[][] board= {{'a','b','c','e'},{'s','f','c','s'},{'a','d','e','e'}};
            String word = "abcced";
            boolean b = new Exp3_2().exist(board, word);
            System.out.println(b);
        }
    }
  • 相关阅读:
    JDK里面包含jre,为什么还要下载一个jre呢?
    2021年11月2日,面试经历
    linux内核学习心得
    关于QQ短信接口的使用。
    软件测试--开发者测试例子
    此博客相关声明·AP2017060911I
    21RNC201906034I·代码重构
    20RNC201901313I·代码重构
    19RND201808172·层次设定
    18RND201801311·图像方案日记
  • 原文地址:https://www.cnblogs.com/ustc-anmin/p/10690008.html
Copyright © 2011-2022 走看看