简单搜索题。
class Solution { public: bool result; bool exist(vector&lt;vector&lt;char&gt; &gt; &amp;board, string word) { vector&lt;vector&lt;int&gt;&gt;flag; flag.clear(); for(int i = 0;i &lt; board.size();i++) { vector&lt;int&gt;item(board[i].size(),0); flag.push_back(item); } result = false; int pos = 0; for(int i = 0;i &lt; board.size();i++) { for(int j = 0;j &lt; board[i].size();j++) { if(flag[i][j] == 0 &amp;&amp; board[i][j] == word[pos]) { flag[i][j] = 1; pos++; existStep(board,flag,word,i,j,pos); pos--; flag[i][j] = 0;<br /> } } } return result; } private: void existStep(vector&lt;vector&lt;char&gt;&gt;&amp;board,vector&lt;vector&lt;int&gt;&gt;&amp;flag,string word,int x,int y,int pos) { if(result)return; if(pos &gt;= word.length()) { result = true; return; } int walk[4][2] = {{-1,0},{0,1},{1,0},{0,-1}}; for(int i = 0;i &lt; 4;i++) { int xn = x + walk[i][0]; int yn = y + walk[i][1]; if(xn &lt; 0 || xn &gt;=board.size() || yn &lt; 0 || yn &gt;= board[0].size())continue; if(flag[xn][yn] == 1 || board[xn][yn] != word[pos])continue; flag[xn][yn] = 1; pos++; existStep(board,flag,word,xn,yn,pos); pos--; flag[xn][yn] = 0; } } };