LeetCode 79. 单词搜索
矩阵上的深度优先搜索DFS。
代码实现:
class Solution {
private:
int dx[4] = {0, 0, -1, 1}, dy[4] = {-1, 1, 0, 0};
public:
bool dfs(vector<vector<char>>& board, string tmpword, string word, int i, int j, vector<vector<int>>& visited) {
if (tmpword.length() >= word.length()) {
if (tmpword == word) return true;
else return false;
}
for (int k = 0; k < 4; ++k) {
int x = i + dx[k], y = j + dy[k];
if (x < board.size() && x >= 0 && y < board[0].size() && y >= 0 && !visited[x][y]) {
tmpword += board[x][y];
visited[x][y] = 1;
if (dfs(board, tmpword, word, x, y, visited))
return true;
tmpword.pop_back();
visited[x][y] = 0;
}
}
return false;
}
bool exist(vector<vector<char>>& board, string word) {
string tmpword = "";
vector<vector<int>> visited(board.size(), vector<int>(board[0].size(), 0));
for (int i = 0; i < board.size(); ++i) {
for (int j = 0; j < board[0].size(); ++j) {
tmpword += board[i][j];
visited[i][j] = 1;
if (dfs(board, tmpword, word, i, j, visited))
return true;
tmpword.pop_back();
visited[i][j] = 0;
}
}
return false;
}
};