LeetCode79. 单词搜索
更新: 1/31/2026 字数: 0 字 时长: 0 分钟
题目链接:LeetCode79. 单词搜索
题目大意就是找到连续的(上下左右)单词,不允许重复使用。
我们看到数据也不大,很明显就是dfs+回溯的方法,先遍历每一个点如果与单词第一个字符匹配则开始搜索,搜索到结果就ans = true,注意回溯即可。
cpp
class Solution {
public:
int step[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};
int m = 0,n = 0;
int mark[10][10];
bool ans = false;
void dfs(vector<vector<char>>& board, string word, int x, int y,int cur) {
if(cur == word.length() - 1) {
ans = true;
return;
}
for(int i = 0;i < 4;i++) {
int xx = x + step[i][0],yy = y + step[i][1];
if(xx >= 0 && xx < m && yy >= 0 && yy < n && !mark[xx][yy]) {
if(board[xx][yy] == word[cur + 1]) {
mark[xx][yy] = 1;
dfs(board, word, xx, yy, cur + 1);
mark[xx][yy] = 0;
}
}
}
}
bool exist(vector<vector<char>>& board, string word) {
m = board.size(),n = board[0].size();
for(int i = 0;i < m;i++) {
for(int j = 0;j < n;j++) {
if(board[i][j] == word[0]) {
mark[i][j] = 1;
dfs(board, word, i, j, 0);
mark[i][j] = 0;
}
}
}
return ans;
}
};