leetcode-Word Search
2015-11-02 18:03
435 查看
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 =
word =
word =
word =
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 =
[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ]
word =
"ABCCED", -> returns
true,
word =
"SEE", -> returns
true,
word =
"ABCB", -> returns
false.
class Solution { public: bool vis[1000][1000]; int row,length; bool backtracing(vector<vector<char> >&grid,string &word,int cur,int i,int j){ if(cur==length) //递归终止条件,能走到这一步,说明已经匹配完了。 return true; if(j>=0&&i>=0&&j<grid[i].size()&&i<row&&!vis[i][j]&&grid[i][j]==word[cur]){ vis[i][j]=true;//避免走回头路,做个标记说明 if(backtracing(grid,word,cur+1,i,j+1))//向右 return true; if(backtracing(grid,word,cur+1,i+1,j))//向下 return true; if(backtracing(grid,word,cur+1,i-1,j))//向上 return true; if(backtracing(grid,word,cur+1,i,j-1))//向左 return true; vis[i][j]=false;//记得还原 } return false; } bool exist(vector<vector<char> > &board, string word) { row=board.size(); length=word.length(); for(int i=0;i<row;++i){ int cal=board[i].size();//因为每个单词不等长,所以要计算 for(int j=0;j<cal;++j){ if(word[0]==board[i][j]){//先确定递归入口 if(backtracing(board,word,0,i,j)) return true; } } } return false; } };
相关文章推荐
- 埃拉托色尼晒算法(C实现)
- 使用软件Mission Planner对飞控进行配置的过程
- yii实战手册-Advanced版[2015-04-12]
- 关于Maven中的常见命令,通过命令的方式快速创建一个空的maven工程,将jar包打到maven仓库中
- liunx的tar归档命令
- C++编程中内存溢出问题
- [UVA 11427] Expect the Expected
- 关于Maven中打包命令(项目中打补丁的时候用到)
- Android-使用SoundPool实现语音计算器
- Context
- linux知识体系
- 关于UtilTimerStack类的使用--XWork2、Struts2内置性能诊断类
- 关于exchange使用foxmail下的pop3无法发送邮件exchange模式正常
- Android Studio 快捷键
- iOS 应用下载和评分地址
- 会分期
- Excel文件导入Mysql
- 理解HTTP幂等性
- 嵌入式Linux串口操作接口
- Qt学习:深拷贝&浅拷贝&隐式共享