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

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    
    class Solution {
    private:
        int dir[4][2] = { {-1,0},{0,-1},{1,0},{0,1} };
        vector<vector<bool>>used;
    public:
        bool isCheckMove(vector<vector<char>>&map,int x, int y) {
            return x >= 0 && x < map[0].size() && y >= 0 && y < map.size();
        }
        bool Search(vector<vector<char>>&map, string& word, int Index,int startX,int startY) {
    
            if (Index == word.length() - 1) {
                return word[Index] == map[startX][startY];
            }
            if (map[startX][startY] == word[Index]) {
                used[startX][startY] = true;
                for (int i = 0; i < 4; ++i) {
                    int newX = startX + dir[i][0];
                    int newY = startY + dir[i][1];
                    if (isCheckMove(map, newX, newY) && !used[newX][newY] && Search(map, word, Index + 1, newX, newY))
                    { 
                        return true;
                    }
                }
                used[startX][startY] = false;
            }    
            return false;
        }
    public:
        bool SearchWord(vector<vector<char>>&map,string& word)
        {
            used = vector<vector<bool>>(map.size(), vector<bool>(map[0].size(), false));
            for (int y = 0; y < map.size(); ++y) {
                for (int x = 0; x < map[y].size(); ++x) {
                    if (map[y][x] == word[0]&&Search(map,word,0,y,x)) {
                        return true;
                    }
                    else {
                        continue;
                    }
                }
            }
            return false;
        }
    };
    
    int main() {
        string word = "bfg";
        vector<vector<char>>map = {
            {'a','b','c'},
            {'d','f','e'},
            {'g','s','h'}
        };
        if (Solution().SearchWord(map, word)) {
            cout << "true" << endl;
        }
        else {
            cout << "false" << endl;
        }
        system("pause");
    }
  • 相关阅读:
    Kafka集群搭建
    Easyui dialog中嵌入iframe
    图表插件Charts.js的使用
    抽象工厂
    工厂方法
    简单工厂模式
    认识Git
    代理模式
    原型设计Axure的基本使用
    MVC Api 的跨项目路由
  • 原文地址:https://www.cnblogs.com/z2529827226/p/11631403.html
Copyright © 2011-2022 走看看