这是一个可以用回溯法解决的典型题。代码是在LeetCode中写的,所以函数、参数的形式是LeetCode的形式。这个代码是看到一位网友写的,非常直观,容易理解。
class Solution{
public:
bool exist(vector<vector<char>>& board, string word)
{
if (word.empty())
return false;
for (int i=0; i<board.size(); ++i)
{
for (int j=0; j<board[i].size(); ++j)
{
if (dfs(board, word, i, j, 0))
return true;
}
}
return false;
}
bool dfs(vector<vector<char>>& board, string word, int i, int j, int w)
{
// 如果索引越界,或者值不匹配,返回false
if (i<0 || i>board.size() || j<0 || j>board[0].size() || board[i][j]!=word[w])
return false;
if (w==word.length()-1)
return fa