zoukankan      html  css  js  c++  java
  • 123. 单词搜索(DFS)

    描述

    给出一个二维的字母板和一个单词,寻找字母板网格中是否存在这个单词。
    单词可以由按顺序的相邻单元的字母组成,其中相邻单元指的是水平或者垂直方向相邻。每个单元中的字母最多只能使用一次。

    样例

    给出
    board =
    [
    "ABCE",
    "SFCS",
    "ADEE"
    ]

    word = "ABCCED", ->返回 true,
    word = "SEE",-> 返回 true,
    word = "ABCB", -> 返回 false.

    class Solution {
    public:
        /**
         * @param board: A list of lists of character
         * @param word: A string
         * @return: A boolean
         */
        bool exist(vector<vector<char>> &board, string &word) {
            // write your code here
                    // write your code here
            vector< vector<bool> > mask(board.size(), vector<bool>(board[0].size(), false));
            for (int i=0; i<board.size(); ++i) {
                for (int j=0; j<board[0].size(); ++j) {
                    if (search(board, word, mask, i, j, 0) ) {
                        return true;
                    }
                }
            }
            return false;
        }
        
        bool search(vector< vector<char> >& board, string word, vector< vector<bool> >& mask, int i, int j, int idx) {
            if (word[idx]==board[i][j]) {
                mask[i][j] = true;
                ++idx;
                if (idx == word.size()) return true;
                else if (i-1>=0 && !mask[i-1][j] && search(board, word, mask, i-1, j, idx)) return true;
                else if (i+1< board.size() && !mask[i+1][j] && search(board, word, mask, i+1, j, idx)) return true;
                else if (j-1>=0 && !mask[i][j-1]&& search(board, word, mask, i, j-1, idx)) return true;
                else if (j+1< board[0].size() && !mask[i][j+1] && search(board, word, mask, i, j+1, idx)) return true;
                else {
                    mask[i][j] = false;
                    return false;
                }
            }
        }
    };
    
  • 相关阅读:
    统计次数
    使用正则消除行号
    【收集】sql查询统计,周,月,年
    ASP.NET脚本过滤-防止跨站脚本攻击(收集别人的)
    win10环境下jdk1.8+Android Developer Tools Build: v22.3.0-887826的问题
    关于虚拟机的问题解决(转自豆瓣)
    工作
    numpy学习
    deepin Python pycharm安装
    pymysql连接和操作Mysql数据库
  • 原文地址:https://www.cnblogs.com/narjaja/p/9813609.html
Copyright © 2011-2022 走看看