leetcode第一刷_Word Search
2024-10-21 18:31:18
这道题之前一直没敢做,没想到前天用递归一遍过了。
。
当时为什么想着用递归,而不是dp呢。由于我想到达某个位置的情况有非常多,即使从当前位置開始的搜索是已知的,但之前的状态是如何的也无从得知啊,实话实说,我是不会用dp解这个。。
递归的思路就好说多了,从当前点開始。有上下左右四个位置能够探測,假设探測成功的话,要把当前的位置用其它符号标记出来,以免反复訪问。实际上就是DFS嘛。仅仅只是入口多一些。
须要注意的一点是,每一个点都能够作为起点。所以这个要穷举一下。否则会漏掉情况的。
当然有一种情况走通就能够返回了。剪枝之。
代码又臭又长,只是work:
class Solution {
public:
int row, column;
bool doexist(vector<vector<char> > &board, string &word, int len, int i, int j){
if(len == word.length()) return true;
bool res;
if(i>0&&board[i-1][j] == word[len]){
board[i-1][j] = '.';
res = doexist(board, word, len+1, i-1, j);
if(res) return true;
else board[i-1][j] = word[len];
}
if(i<row-1&&board[i+1][j] == word[len]){
board[i+1][j] = '.';
res = doexist(board, word, len+1, i+1, j);
if(res) return true;
else board[i+1][j] = word[len];
}
if(j>0&&board[i][j-1] == word[len]){
board[i][j-1] = '.';
res = doexist(board, word, len+1, i, j-1);
if(res) return true;
else board[i][j-1] = word[len];
}
if(j<column-1&&board[i][j+1] == word[len]){
board[i][j+1] = '.';
res = doexist(board, word, len+1, i, j+1);
if(res) return true;
else board[i][j+1] = word[len];
}
return false;
}
bool exist(vector<vector<char> > &board, string word) {
row = board.size();
if(row == 0) return false;
column = board[0].size();
char c;
for(int i=0;i<row;i++){
for(int j=0;j<column;j++){
if(board[i][j] == word[0]){
board[i][j] = '.';
if(doexist(board, word, 1, i, j))
return true;
board[i][j] = word[0];
}
}
}
return false;
}
};
最新文章
- ABP Zero示例项目登录报错“Empty or invalid anti forgery header token.”问题解决
- 在其他系统Iframe中显示SharePoint 页面
- chrome调试本地项目, 引用本地javascript文件
- javascript多态 - 类形式实现demo
- QtCreator动态编译jsoncpp完美支持x86和arm平台
- android 开发(百度地图)
- linxu c语言 fcntl函数和flock函数区别 【转】
- JavaScript实现点击按钮弹出输入框,点确定后添加li组件到ul组件里
- 《CSAPP》读书杂记 - Chapter 2. Representing and Manipulating Information
- ssh连接ubuntu提示连接不上的问题
- HYML / CSS部分
- OKMX6Q ffmpeg &; ffserver
- Hive命令及操作
- 回去试idea
- win10下VM 中centos 安装共享文件
- GUI界面相应事件
- 【转】电脑运行命令CMD集锦
- 面向切面编程--AOP(转)
- ArcGIS API for Silverlight 的重要内容******重要
- 《Python》 property、classmethod、staticmethod、isinstance、issubclass
热门文章
- POJ3683 Priest John&#39;s Busiest Day 【2-sat】
- JAVA 字节流和字符流度读写的区别
- 【07】node 之 Buffer
- 四个简单易用的demo,关于iOS定时器和延时的,非常好用。
- linux之awk手册
- [论文]A Link-Based Cluster Ensemble Approach for Categorical Data Clustering
- Python 复习-1
- 在 IntelliJ IDEA 中配置 JSF 开发环境的入门详解
- mysql error 1093 解决办法
- 洛谷 P1865 A % B Problem[筛素数/前缀和思想/区间质数个数]