Форум программистов, компьютерный форум, киберфорум
Наши страницы
Алгоритмы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Алексейко
3 / 3 / 2
Регистрация: 19.03.2011
Сообщений: 72
1

Построение графа из массива

17.01.2015, 23:13. Просмотров 938. Ответов 2
Метки нет (Все метки)

Задача проста как пробка.
Есть массив:
PHP
1
array(array(1, 2, 3, ...), array(4, 5, ...), array(6, 7, 8, 9, ...), ...)
Нужно сформировать массив результатов вида:
PHP
1
array(array(1, 4, 6, ...), array(1, 4, 7, ...), ..., array(2, 5, 6, ...), ..., array(3, 5, 9, ...), ...)
Количество элементов каждого массива неизвестно - может быть сколько угодно
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2015, 23:13
Ответы с готовыми решениями:

Построение графа видимости для многоугольника
Доброго времени суток! Необходимо решить задачу: найти кратчайший путь между двумя точками на...

Построение Графа
Добрый день. Имеется StringGrid 10x10. На основе его данных (т.е 0 или 1) строится ориентированный...

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

Построение графа C++
Постройте граф с вершинной связностью - 3, реберной связностью - 4, и минимальной степенью вершины...

Построение графа
Помогите! есть матрица смежности с весом ребер, нужно по этой матрице строить граф, должна ж быть...

2
nworm
59 / 59 / 19
Регистрация: 13.07.2009
Сообщений: 180
18.01.2015, 00:35 2
A[i][j] - исходные массивы
T[i] - текущий массив номеров

1) Сделать T[i] массивом из 1.

2) Сформировать текущий новый массив
for(i=1;i<=количество всех массивов;i++)
В текущий формируемый массив передаётся A[i][T[i]];

Если

3) Изменить текущий массив номеров
Вызвать процедуру УВЕЛИЧИТЬ(количество всех массивов)
Если T[1]<=длина массива n, то Идти к пункту 2.

Процедура УВЕЛИЧИТЬ(n)
T[n]++
Если T[n]>длина массива n, то
__________T[n]=1;
__________Если n>1 УВЕЛИЧИТЬ T[n-1]
__________Иначе конец процедуры.
Конец Если
0
RaiaNKnight
97 / 71 / 12
Регистрация: 29.06.2011
Сообщений: 465
Записей в блоге: 1
18.01.2015, 19:10 3
В питоне можете использовать itertools.product, чтобы получить ответ в одну строчку

Добавлено через 7 минут
На счёт алгоритма:
1) Пусть количество массивов равно N. Обозначим массив массивов как A. Тогда A[i] обозначает i-й массив в A, 1 <= i <= N.
2) Заведём массив индексов M, длина которого L = N. Изначально все M[j] = 1, 1 <= j <= L.
3) Каждый индекс M[j] не может стать больше, чем длина соответствующего массива, A[j].
4) Проинициализируем массив M единицами.
5) Для данного массива M, выведем соответствующие элементы из массивов из A как A[M[k]], 1 <= k <= L (или запишем в массив результатов).
6) Прибавим единицу к массиву M (как к длинному числу).
7) Если все индексы достигли своих максимальных значений, то завершим работу, иначе перейдём к шагу 5.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2015, 19:10

построение графа
Задача: &quot;Задан граф дерево с корневой вершиной. Нужно, начиная с корневой вершины, обойти все...

Построение графа
Народ скажите , а как построить вот такой же граф а word 2007 ? или любой другой программе ....

Построение графа
Всем доброго времени суток. Есть вот такой граф:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.