***(leetcode_backtracking) Word Search
来源:互联网 发布:明教知乎 编辑:程序博客网 时间:2024/06/07 14:03
Word Search
Total Accepted: 29308 Total Submissions: 146478My SubmissionsGiven 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
.Have you met this question in a real interview?
Yes
No
Discuss
解题思路: 类似于迷宫,递归回溯。需要一个辅助数组记录走过的位置,防止同一个位置被使用多次
class Solution {public: bool exist(vector<vector<char> > &board, string word) { if(word.length()==0) return true; vector<vector<bool> > visited; vector<bool> tmp; int i, j; for(i=0; i < board.size(); i++){ for(j=0; j < board[0].size(); j++){ tmp.push_back(false); } visited.push_back(tmp); } for(i=0; i < board.size(); i++){ for(j=0; j < board[0].size(); j++){ if(board[i][j]==word[0]){ visited[i][j] = true; if(word.length()==1 || search(board, i, j, word.substr(1,word.length()-1), visited) ){ return true; } visited[i][j] = false; } } } return false; } bool search(vector<vector<char> > &board, int i, int j, string word, vector<vector<bool> > visited){ if(word.length()==0) return true; int direction[][2] = {{0,1}, {0,-1}, {1,0}, {-1,0}}; for (int k=0; k < 4; k++) { int ii = i + direction[k][0]; int jj = j + direction[k][1]; if ( ii>=0 && ii<board.size() && jj>=0 && jj<board[i].size() && board[ii][jj]==word[0] && visited[ii][jj]==false) { visited[ii][jj] = true; if (word.length()==1 || search(board,ii,jj,word.substr(1,word.length()-1),visited)) { return true; } visited[ii][jj] = false; } } return false; }};
0 0
- ***(leetcode_backtracking) Word Search
- Word Search
- Word Search
- word search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- kruskal
- 网页布局之响应式设计简明指南
- iOS开发下载文件速度计算
- 主流手机分辨率尺寸
- C++Primer第二章(变量和基本类型)笔记
- ***(leetcode_backtracking) Word Search
- JDK8更新内容
- End of string character in Java
- qt4.8 移植到Arm 平台
- 中文 iOS/Mac 开发博客列表
- ios动画:获取处于动画中的UIView,UIImageView的坐标
- const_cast
- C语言 最小生成树
- Android studio安装之gradle-1.6-bin问题解决终极方案 .