2012-03-10 4 views
1

У меня есть набор чисел:все возможные комбинации из множества

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, поэтому вся помощь или решения для этого очень ценятся. И для уточнения, это не домашнее задание, это просто то, что я хотел бы узнать и понять.

+0

может вы можете найти здесь [здесь] [1] [1]: http://stackoverflow.com/questions/3742506/php-array-combinations спасибо –

ответ

0

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

EDIT

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

+0

Это на самом деле хорошая идея. Я изучу его, но я не уверен, что это помогает мне создавать все разные комбинации. – jimmy

+0

Если все пути, которые вы хотите отслеживать, должны заканчиваться на 1, тогда начинайте там и работайте назад. Повеселись. –

Смежные вопросы