LEXAlForpostl
Мой дом здесь!
- Регистрация
- 21 Май 2008
- Сообщения
- 766
- Реакции
- 228
- Автор темы
- #1
Здравствуйте.
Есть квадратный массив данных, на главной диагонали -1, симметричен относительной главной диагонали, т.е. верхний и нижний треугольники данных равны. Например:
-1 87 11 44 97
87 -1 94 89 71
11 94 -1 64 57
44 89 64 -1 90
97 71 57 90 -1
Поиск элементов осуществляется по следующему алгоритму:
1. Находим максимальный элемент, запоминаем его индексы i,j.
2. Удаляем i,j столбцы.
3. В i,j строке осуществляем поиск следующего максимального элемента.
4. Удаляем столбец равный новой найденной координате (одна из координат известна, вторая новая).
5. Затем повторяем поиск во всех строках, участвовавших до этого в поиск плюс новая координата из предыдущего шага.
Повторяем 4,5 шаги пока не закончатся столбы.
В итоге получится цепочка связей, которую можно представить в виде дерева, либо в виде цепочек.
Причем если вес связи больше 70, то необходимо её "разорвать".
В итоге, ответ должен быть в виде таблицы:
3(индекс строки или столбца без разницы в исходном массиве) - 6(индекс строки или столбца без разницы в исходном массиве) = 11 (вес)
И т.д.
Если цепь/дерево разорвано, то значит надо новую таблицу строить.
Написал скрипт для этого дела:
Честно говоря, с первой ошибки не понимаю в чем дело. Помогите, пожалуйста, разобраться. Буду признателен за помощь.
Есть квадратный массив данных, на главной диагонали -1, симметричен относительной главной диагонали, т.е. верхний и нижний треугольники данных равны. Например:
-1 87 11 44 97
87 -1 94 89 71
11 94 -1 64 57
44 89 64 -1 90
97 71 57 90 -1
Поиск элементов осуществляется по следующему алгоритму:
1. Находим максимальный элемент, запоминаем его индексы i,j.
2. Удаляем i,j столбцы.
3. В i,j строке осуществляем поиск следующего максимального элемента.
4. Удаляем столбец равный новой найденной координате (одна из координат известна, вторая новая).
5. Затем повторяем поиск во всех строках, участвовавших до этого в поиск плюс новая координата из предыдущего шага.
Повторяем 4,5 шаги пока не закончатся столбы.
В итоге получится цепочка связей, которую можно представить в виде дерева, либо в виде цепочек.
Причем если вес связи больше 70, то необходимо её "разорвать".
В итоге, ответ должен быть в виде таблицы:
3(индекс строки или столбца без разницы в исходном массиве) - 6(индекс строки или столбца без разницы в исходном массиве) = 11 (вес)
И т.д.
Если цепь/дерево разорвано, то значит надо новую таблицу строить.
Написал скрипт для этого дела:
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
Честно говоря, с первой ошибки не понимаю в чем дело. Помогите, пожалуйста, разобраться. Буду признателен за помощь.