Изучение матричных словосочетаний JavaScript: подробное руководство

В этой статье мы углубимся в мир матричных словосочетаний JavaScript. Мы рассмотрим различные методы и предоставим примеры кода для создания различных комбинаций слов из матрицы. Независимо от того, являетесь ли вы новичком или опытным разработчиком JavaScript, это руководство поможет вам понять и реализовать эти методы в ваших собственных проектах.

Метод 1: подход грубой силы
Подход грубой силы предполагает генерацию всех возможных комбинаций слов из матрицы. Это простой метод, но он может оказаться неэффективным для больших матриц. Вот пример фрагмента кода:

function generateCombinations(matrix) {
  const combinations = [];
  function backtrack(word, row, col) {
    if (row < 0 || col < 0 || row >= matrix.length || col >= matrix[row].length)
      return;
    word += matrix[row][col];
    combinations.push(word);
    backtrack(word, row + 1, col);
    backtrack(word, row - 1, col);
    backtrack(word, row, col + 1);
    backtrack(word, row, col - 1);
  }
  for (let i = 0; i < matrix.length; i++) {
    for (let j = 0; j < matrix[i].length; j++) {
      backtrack('', i, j);
    }
  }
  return combinations;
}
const matrix = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']];
const combinations = generateCombinations(matrix);
console.log(combinations);

Метод 2: поиск в глубину (DFS)
Алгоритм DFS — это еще один подход к созданию словосочетаний из матрицы. Он использует рекурсивную функцию для исследования всех возможных путей. Вот пример реализации:

function generateCombinations(matrix) {
  const combinations = [];
  const rows = matrix.length;
  const cols = matrix[0].length;
  function dfs(row, col, word) {
    if (row < 0 || col < 0 || row >= rows || col >= cols || matrix[row][col] === '#')
      return;
    const letter = matrix[row][col];
    word += letter;
    matrix[row][col] = '#'; // Mark the visited cell
    if (word.length > 1)
      combinations.push(word);
    dfs(row + 1, col, word);
    dfs(row - 1, col, word);
    dfs(row, col + 1, word);
    dfs(row, col - 1, word);
    matrix[row][col] = letter; // Restore the cell
  }
  for (let i = 0; i < rows; i++) {
    for (let j = 0; j < cols; j++) {
      dfs(i, j, '');
    }
  }
  return combinations;
}
const matrix = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']];
const combinations = generateCombinations(matrix);
console.log(combinations);

Метод 3: структура данных Trie
Использование структуры данных Trie может быть эффективным подходом при работе с большими матрицами и словарями. Это позволяет нам эффективно искать действительные слова. Вот пример реализации: