public class Solution {
public bool Exist(char[,] board, string word)
{
RowLen = board.GetLength(0);
ColLen = board.GetLength(1);
for(var i =0 ;i < RowLen; i++){
for(var j = 0;j < ColLen; j++){
if(TryFind(board, word, i, j, 0)){
return true;
}
}
}
return false;
}
private int RowLen;
private int ColLen;
public bool TryFind(char[,] board, string word, int row, int col, int i)
{
if(row < 0 || col < 0 || row >= RowLen || col >= ColLen || word[i] != board[row,col]){
return false;
}
if(i == word.Length - 1){
return true;
}
var t = board[row,col];
board[row,col] = ‘%‘;
if(TryFind(board, word, row-1 , col, i+1)||
TryFind(board, word, row+1 , col, i+1)||
TryFind(board, word, row , col-1, i+1)||
TryFind(board, word, row , col+1, i+1)){
return true;
}
board[row,col] = t;
return false;
}
}原文:http://blog.csdn.net/lan_liang/article/details/50144427