В этой статье мы углубимся в мир матричных словосочетаний 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 может быть эффективным подходом при работе с большими матрицами и словарями. Это позволяет нам эффективно искать действительные слова. Вот пример реализации: