LeetCode 79. Word Search
Solution1:我的答案
DFS + Backtracking
class Solution {
public:
bool exist(vector<vector<char>>& board, string word) {
int m = board.size();
if (!m || !word.size()) return false;
int n = board[0].size();
if (!n) return false;
bool symbol = false;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
vector<vector<int> > visited(m, vector<int>(n, 0));//0:未用;1:用过
string temp;
int len = 0;
symbol = my_search(board, i, j, len, word, visited);
if (symbol) return true;
}
}
return false;
}
bool my_search(vector<vector<char>>& board, int i, int j, int len,
string& word, vector<vector<int> >& visited) {
if (len == word.size())
return true;
if (i >= 0 && i < board.size() && j >= 0
&& j < board[0].size() && visited[i][j] == 0
&& board[i][j] == word[len]) {
len++;
visited[i][j] = 1;
if (my_search(board, i - 1, j, len, word, visited)
|| my_search(board, i + 1, j, len, word, visited)
|| my_search(board, i, j - 1, len, word, visited)
|| my_search(board, i, j + 1, len, word, visited))
return true;
len--;
visited[i][j] = 0;
}
return false;
}
};