class Solution {
public:
int dir[4][2] = {1, 0, 0, 1, -1, 0, 0, -1};
bool backtracking(vector<vector<char>>& board, string word, vector<vector<bool>>& visited, int x, int y, int pos){
if(pos >= word.size()){
return true;
}
for(int i = 0; i < 4; i++){
int nextx = x + dir[i][0];
int nexty = y + dir[i][1];
if(nextx < 0 || nextx >= board.size() || nexty < 0 || nexty >= board[0].size()) continue;
if(!visited[nextx][nexty] && board[nextx][nexty] == word[pos]){
visited[nextx][nexty] = true;
if(backtracking(board, word, visited, nextx, nexty, pos + 1)){
return true;
}
visited[nextx][nexty] = false;
}
}
return false;
}
bool exist(vector<vector<char>>& board, string word) {
vector<vector<bool>> visited(board.size(), vector<bool>(board[0].size(), false));
int x = 0, y = 0;
for(int i = 0; i < board.size(); i++){
for(int j = 0; j < board[0].size(); j++){
if(board[i][j] == word[0]){
visited[i][j] = true;
if(backtracking(board, word, visited, i, j, 1)){
return true;
}
visited[i][j] = false;
}
}
}
return false;
}
};
单词搜索-力扣
于 2024-07-24 16:25:08 首次发布