Было бы очень легко понять, пытаетесь ли вы думать о массиве непрерывной строки в виде массива непрерывных номеров:
Думай вашего массива непрерывных цепочек как эквивалент этой
[ab, cde, fgh, ij, klmn, opq] = [1, 2, 3, 4, 5, 6]
Предполагая, что это делает его далеко легко подойти к нашей проблеме.
Initial Sequence: [1,2,3,4,5,6] - Seq - 1
Теперь, вы должны понимать, что здесь по-прежнему будет сформирован только тогда, когда вы Concat их только следующие из них (строка или номер) или комбинации.
Пример: В начальной последовательности 5 могут идти с 6, а 6 - немедленными (непрерывными) рядом с 5, но 4 не могут быть с 6, аналогично 4 может идти с комбинацией 56 (непрерывная комбинация). Все, что нам нужно сделать, это убедиться, что эти комбинации являются непрерывными и немедленными до 4.
Прежде всего, мы сделаем несколько последовательных форм последовательности, начиная с последовательности, каждая выходная последовательность будет входной для поступления в другую непрерывная последовательность.
Пример:
Последовательность получается concating их непосредственные последующие.
[1,2,3,4,56] - Seq - 2
[1,2,3,45,6] - Seq - 3
[1,2,34,5,6] - Seq - 4
[1,23,4,5,6] - Seq - 5
[12,3,4,5,6] - Seq - 6
То же самое нам нужно оценить для seq-2 до seq-6.
Пример:
Seq-2 приведет к:
Input->
[1,2,3,4,56] - Seq - 2
Sequence obtained by concating their immediate next ones.
Output->
[1,2,3,4,56] - Seq - 7
[1,2,3,456] - Seq - 8
[1,2,34,56] - Seq - 9
[1,23,4,56] - Seq - 10
[12,3,4,56] - Seq - 11
Теперь снова сл-7 SEQ-11 представляет собой новый набор входных sequesces, так же, как последовательность seq2-seq6 и для всех этих последовательностей необходимо выполнить одно и то же сопоставление.
Теперь, по моему мнению есть два возможных подхода достигнуть этого: 1. Рекурсия 2. Стек
Хотя, я не собираюсь его код для вас, я дам вам краткий о втором подходе.
Step:1. Initailly your stack in empty.
Step:2 With each input sequence you will obtain some output sequences.
Step:3 Push these output sequences back in the stack.
Step:4 Pop the top of the stack and store it in an temp array and push the outputs back to the stack.
Step:5 Temp array will store all the sequences.
Очевидно, что вам необходимо обеспечить некоторую проверку состояния, чтобы избежать повторения повторяющейся последовательности дважды. Надеюсь, что это имеет смысл.
Кроме того, я бы предложил вам добавить тег алгоритма, я получу гораздо лучшие ответы. Это скорее вопрос алгоритма, чем вопрос javascript.
, пожалуйста, добавьте то, что вы пробовали. –
'' ab cde fgh ", ...' последовательность пропущена, почему? – RomanPerekhrest
@RomanPrekhrest: В коде есть комментарии «// ...», я предположил, что они должны обозначать все отсутствующие последовательности –