Если это похоже на поиск слова в том смысле, что вы можете идти только в одном направлении (как только вы начнете влево, вы можете продолжать двигаться только влево), ответ должен быть довольно простым, просто идите вперед и проверьте все возможные начальные позиции и идти в каждом направлении. В худшем случае это будет O (mn ^ 2) для n на n. Если вы можете идти вверх / влево / и т. Д. Любое количество раз, самый очевидный способ - обработать матрицу как граф и выполнить BFS или DFS. В зависимости от размера слова и распределения букв это может быть слишком дорого.
Если бы у вас было несколько запросов на одну матрицу, оба этих метода могли бы быть ускорены путем кэширования сгенерированных слов в виде трип-структуры со ссылками на исходные ячейки.