博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
word search 此题若会,所有dfs矩阵全会
阅读量:7281 次
发布时间:2019-06-30

本文共 3278 字,大约阅读时间需要 10 分钟。

[LeetCode] Word SearchGiven a 2D board and a word, find if the word exists in the grid.The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once.For example,Given board =[  ["ABCE"],  ["SFCS"],  ["ADEE"]]word = "ABCCED", -> returns true,word = "SEE", -> returns true,word = "ABCB", -> returns false.递归Java:public class Solution {    public boolean exist(char[][] board, String word) {        // Start typing your Java solution below        // DO NOT write main() function        if(word.length() == 0)   return true;        int h = board.length;        if(h == 0)    return false;        int w = board[0].length;        boolean[][] flag = new boolean[h][w];                for(int i = 0; i < h; i++){            for(int j = 0; j < w; j++){                if(word.charAt(0) == board[i][j]){                    if(func(board, word, 0, w, h, j, i, flag)) return true;                }            }        }                return false;    }        public boolean func(char[][] board, String word, int spos, int w, int h, int x, int y, boolean[][] flag){        if(spos == word.length())  return true;        if(x < 0 || x >= w || y < 0 || y >= h)   return false;        if(flag[y][x] || board[y][x] != word.charAt(spos))   return false;                flag[y][x] = true;                // up        if(func(board, word, spos + 1, w, h, x, y-1, flag)){            return true;        }        // down        if(func(board, word, spos + 1, w, h, x, y+1, flag)){            return true;        }        // left        if(func(board, word, spos + 1, w, h, x-1, y, flag)){            return true;        }        // right        if(func(board, word, spos + 1, w, h, x+1, y, flag)){            return true;        }                flag[y][x] = false;                return false;    }}c++class Solution {public:    bool exist(vector
> &board, string word) { // Start typing your C/C++ solution below // DO NOT write int main() function if(word.size() == 0) return true; int h = board.size(); if(h == 0) return false; int w = board[0].size(); vector
> flag(h, vector
(w, false)); for(int i = 0; i < h; i++){ for(int j = 0; j < w; j++){ if(board[i][j] == word[0]){ if(func(board, word, w, h, j, i, 0, flag)) return true; } } } return false; } bool func(vector
> board, string word, int w, int h, int x, int y, int spos, vector
> flag){ if(spos == word.size()) return true; if(x < 0 || x >= w || y < 0 || y >= h) return false; if(flag[y][x] || word[spos] != board[y][x]) return false; flag[y][x] = true; // up if(func(board, word, w, h, x, y - 1, spos + 1, flag)){ return true; } if(func(board, word, w, h, x, y + 1, spos + 1, flag)){ return true; } if(func(board, word, w, h, x - 1, y, spos + 1, flag)){ return true; } if(func(board, word, w, h, x + 1, y, spos + 1, flag)){ return true; } flag[y][x] = false; return false; }};

 

转载于:https://www.cnblogs.com/leetcode/p/3555991.html

你可能感兴趣的文章
wait for stopper event to be increased
查看>>
上海往事之找Free机会一周
查看>>
[20160302]关于FULL_HASH_VALUE.txt
查看>>
奇葩念头:微信能取代WP应用吗
查看>>
Cordova插件,自动根据包名替换R资源描述
查看>>
Python探索记(12)——元组Tuple
查看>>
wcf系列学习5天速成——第五天 服务托管
查看>>
对于超大型SQL SERVER数据库执行DBCC操作
查看>>
【推荐】腾讯android镜像(做Android开发的得好好利用下这个网站,国内的大公司还是可以滴……)...
查看>>
“移”码平川:移动端高可用性体系
查看>>
从程序员的角度谈创业三年(转)
查看>>
Java转行之路—《深入理解JAVA虚拟机总结》(一)
查看>>
智能机回归触屏手写?苹果专利Apple Pencil或将支持手机
查看>>
索尼玩复兴 为何就不能向“巨硬”学习
查看>>
yum 安装时错误 Errno 14 Couldn&#39;t resolve host 解决办法(转)
查看>>
C语言---递归反向输出任意长度的字符串
查看>>
SQL Server 优化器特性导致的内存授予相关BUG
查看>>
在wpf中如何让MediaElement的视频循环播放
查看>>
网格最短路径算法(Dijkstra & Fast Marching)(转)
查看>>
SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据
查看>>