Leetcode:Word Search
来源:互联网 发布:双色球软件2016破解版 编辑:程序博客网 时间:2024/06/06 07:23
Given 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.
解法: 类似于迷宫,递归回溯。需要一个辅助数组记录走过的位置,防止同一个位置被使用多次。
#include<set>#include<vector>#include<iostream>using namespace std;bool dfs(const vector<string> &board, const string &word, int index, int x, int y, vector<vector<bool> > &visited);bool exist(vector<string > &board, string word) { const int m = board.size(); const int n = board[0].size(); vector<vector<bool> > visited(m, vector<bool>(n, false)); for (int i = 0; i < m; ++i) for (int j = 0; j < n; ++j) if (dfs(board, word, 0, i, j, visited)) return true; return false;}bool dfs(const vector<string> &board, const string &word, int index, int x, int y, vector<vector<bool> > &visited){ if (index == (int)word.size()) return true; // 收敛条件 if (x < 0 || y < 0 || x >= (int)board.size() || y >= (int)board[0].size()) return false; // 越界,终止条件 if(word[index]!=board[x][y] || visited[x][y]) //判断是否相等,同时防止越界。对于s=ABCB ,在寻找的过程中不能当走到s1=ABCE的C时,再往回走到B return false; visited[x][y] = true; bool ret = dfs(board, word, index + 1, x - 1, y, visited) || // 上 dfs(board, word, index + 1, x + 1, y, visited) || // 下 dfs(board, word, index + 1, x, y - 1, visited) || // 左 dfs(board, word, index + 1, x, y + 1, visited); // 右 visited[x][y] = false; return ret;}int main(){ string s1="ABCE"; string s2="SFCS"; string s3="ADEE"; string s ="ABCB"; vector<string> board; board.push_back(s1); board.push_back(s2); board.push_back(s3); bool result = exist(board, s) ; cout<<result<<endl; return 0;}
0 0
- LeetCode: Word Search
- [Leetcode] Word Search
- LeetCode : Word Search
- Leetcode: Word Search
- [LeetCode] Word Search
- leetcode 56: Word Search
- Leetcode 79 Word Search
- [leetcode ] word search
- [Leetcode] Word Search
- [LeetCode]Word Search
- Leetcode Word Search
- [leetcode]word search
- [leetcode] Word Search
- LeetCode-Word Search
- [LeetCode] Word Search
- LeetCode - Word Search
- leetcode word search
- LeetCode:Word Search
- unity 武器拖尾效果实现的代码
- 破解YourKit Java Profiler 2014, build 14100
- Nosql学习
- mysql的分区技术
- 移除字符串中的字符和移除字符串数组中的字符
- Leetcode:Word Search
- TCP协议深入理解
- Spark1.0.0 on Standalone 模式部署
- 归纳法求解最大连续子序列
- Mysql分表和分区的区别
- Spark On Yarn(HDFS HA)详细配置过程
- Google hacking语法总结
- 用pil产生验证码出现:ImportError: The _imagingft C module is not installed
- 【解决】centos6.2 spark cluster问题(持续追加)