給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。
單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中「相鄰」單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。
示例:board =
[ ['a','b','c','e'],
['s','f','c','s'],
['a','d','e','e']
]給定 word = "abcced", 返回 true.
給定 word = "see", 返回 true.
給定 word = "abcb", 返回 false.
這道題利用回溯解決,涉及深度搜尋優先dfs和狀態重置。
回溯:按照上,右,下,左的順序搜尋
偏移量陣列在二維平面內經常使用,這是乙個技巧,偏移陣列的4個偏移的順序隨便設定
130題和200題也用到偏移陣列
public class solution , , , };
// 盤面上有多少行
private int m;
// 盤面上有多少列
private int n;
private string word;
private char board;
public boolean exist(char board, string word)
n = board[0].length;
marked = new boolean[m][n];
this.word = word;
this.board = board;
for (int i = 0; i < m; i++) }}
return false;
}private boolean dfs(int i, int j, int start)
if (board[i][j] == word.charat(start)) }}
marked[i][j] = false;
}return false;
}private boolean inarea(int x, int y)
79 單詞搜尋
給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回t...
79 單詞搜尋
不允許重複使用字母 seen 0for i in range n for j in range m for i in range m for j in range n if self.search board,word,0,i,j,seen return true return false word...
79 單詞搜尋
給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回 ...