Все возможные комбинации из наборов

У меня есть набор чисел:

1,22
1,46
32,1
1,9
32,22
1,14
1,45
1,33
33,22
45,22
32,46
32,9
3,1
3,9
3,22
3,32
3,46
9,22
46,22
46,45
46,33
15,1
15,46
15,6
15,22
15,3
15,9
15,45
15,33
15,32
15,14

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

Например, если у меня есть пара {15,1}, следующий может быть только {1,46}, а следующий - {46,45}, и последняя пара должна заканчиваться первым номером всего набора. В этом случае это может быть, например, {45,1}.

Таким образом, конечный результат наборов с 4 установленным пределом будет

{15,1,1,46,46,45,45,1}

Я могу делать базовые наборы мощности и генерировать все возможные комбинации из набора чисел, но это кажется мне слишком сложным.

Я могу сделать C, Javascript или PHP, поэтому вся помощь или решения для этого высоко ценятся. И для пояснения, это не домашняя работа, это просто то, что я хотел бы выучить и понять.

1 ответ

Это выглядит так, как будто некоторая структура данных графа и некоторые алгоритмы графа были бы уместны. Ваш график будет содержать узлы (каждый из которых является числом) и ребра (каждый из которых представляет одну из ваших пар). Затем напишите соответствующую процедуру для обхода графика. Из вашего вопроса не совсем понятно, каковы правила прогулки, но я думаю, вы знаете.

РЕДАКТИРОВАТЬ

Конечно, я должен отметить, что у вас уже есть структура данных графа, она называется списком смежности. Google вокруг алгоритмов и представлений.

Другие вопросы по тегам