C++ dfs solution.
    \n    bool exist(vector<vector<char>>& board, string word) {\n        for (unsigned int i = 0; i < board.size(); i++) \n            for (unsigned int j = 0;
        \n    bool exist(vector<vector<char>>& board, string word) {\n        for (unsigned int i = 0; i < board.size(); i++) \n            for (unsigned int j = 0; j < board[0].size(); j++) \n                if (dfs(board, i, j, word))\n                    return true;\n        return false;\n    }\n    \n    bool dfs(vector<vector<char>>& board, int i, int j, string& word) {\n        if (!word.size())\n            return true;\n        if (i<0 || i>=board.size() || j<0 || j>=board[0].size() || board[i][j] != word[0])  \n            return false;\n        char c = board[i][j];\n        board[i][j] = '*';\n        string s = word.substr(1);\n        bool ret = dfs(board, i-1, j, s) || dfs(board, i+1, j, s) || dfs(board, i, j-1, s) || dfs(board, i, j+1, s);\n        board[i][j] = c;\n        return ret;\n    }
['Backtracking', 'Depth-First Search', 'C++']