![]() |
|
|
![]()
|
|
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
Здраствуйте! Необходимо реализовать ЭФФЕКТИВНЫЙ алгоритм прохода по двумерному массиву в порядке возрастания его элементов+ если имеется несколько минимальных элементов в порядке их удаленности их от левого верхнего элемента, то есть точки (0,0). То есть имея матрицу:
7 8 5 3 2 4 5 9 6 3 1 2 Пройти её должны в следующем порядке: 10 11 7 4 2 6 8 12 6 3 1 2 Пока что придумал только вариант в лоб, но он мне не нравится:
Опять же, идея далеко не эффективна, помогите оптимизировать Это сообщение отредактировал(а) Hohhi - 16.5.2009, 10:58 |
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
а почему первый элемент 10?
|
|||
|
||||
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
nworm, первый элемент 1 в третьей строке и третьем столбце
а элемент 7 из первой строки и первого столбца необходимо пройти десятым |
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
1) За один проход по массиву получаем упорядоченное множество
(ai,bi,Ri) ai - номер элемента bi - элемент Ri - расстояние от левого верхнего угла. (11,1,R1) (5,2,R2) (12,2,R3) (4,3,R4) (10,3,R5) (6,4,R6) (3,5,R7) (7,5,R8) (9,6,R9) (1,7,R10) (2,8,R11) (8,9,R12) Структура этого множество - какое-нибудь дерево (или массив). 2) Идём по массиву от минимального bi к максимальному bi. Итоговый массив формируем по формуле: A[ai]=bi |
|||
|
||||
| Hohhi |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
может вот так ?
да и потом цель не сфоримровать массив, а опираясь на него провести некие действия в соответствующем порядке. Идея со структурой неплохая, была и у меня. Пожалуй, первое поле ai бесполезно, и лучше бы иметь в нем некую структуру с индексами элемента то, есть: ((3,3),1,R1) ((1,2),2,R2) ((3,4),2,R3) тогда необходимость хранить расстояние исчезает. Далее, действительно, стоит, наверно отсортировать массив для элементов с одинаковыми bi. И пройти по элементам чётко по полученному массиву. Тоже не очень эффективно, но получше Это сообщение отредактировал(а) Hohhi - 16.5.2009, 20:55 |
||||
|
|||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
можно сортировать, можно вставки в древесные структуры пробовать, в зависимости от особенностей задачи
|
|||
|
||||
| Hohhi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
Вот подошедший вполне вариант, написанный на скорую руку. Конечно, сортировка вставкой, совсем не лучшее, но тут она сойдёт. Кому надо, вот код:
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |