Итак, я создаю класс для поиска слов в массиве 2D java, следуя стратегии Trie / prefix. Я нахожусь в точке, где мне нужно просматривать соседние ячейки моей текущей ячейки в разных направлениях, используя массивы строк / столбцов.
int[] row = { -1, -1, -1, 0, 0, 1, 1, 1 };
int[] col = { -1, 0, 1, -1, 1, -1, 0, 1 };
for (Map.Entry<Character, Node> eS: n.value.entrySet())
{
// verify the 8 different directions of my current cell
for (int k = 0; k < 8; k++)
{
// skip if the cell is invalid, already visited, or doesn't follow a path
int x = i + row[k];
int y = j + col[k];
if ((x >= 0 && x < this.length) && (y >= 0 && y < this.length) && !visited[x][y] && (this.grid[x][y] == eS.getKey())) {
findWords(entry.getValue(), i + row[k], j + row[k], visited, path + eS.getKey(), res);
}
}
}
Моя проблема с этим решением состоит в том, что просмотр может идти в разных направлениях после первого шага, в то время как я хочу, чтобы он сохранял то же направление, что и на первом шаге (либо горизонтально l> rr> l , то же самое для вертикали и по диагонали в направлении 4, но не в разных направлениях одновременно). Кажется, я не могу поместить это в код.
Любое предложение / помощь будет более чем приветствоваться.