![]() |
|
![]() ![]() ![]() |
|
NAGGANO |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.10.2010 Где: Донецк Репутация: нет Всего: нет |
Помогите разобраться с алгоритмом удаления серии одинаковых элементов в матрице. Например, есть матрица
1 0 0 1 1 1 1 1 1 0 0 0 1 2 2 1 1 0 1 0 1 0 1 0 1 1 1 1 0 0 0 2 2 2 2 2 Надо пройтись по матрице и удалить одинаковые элементы, количество которых в строке ( или столбце ) больше 3. То есть, я как думаю, надо пройтись по матрице и как-то запомнить все подряд идущие элементы и в конце их все удалить. Но никак не могу придумать алгоритм. Помогите пожалуйста! |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 5 Всего: 121 |
Что должно остаться после удаления?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
NAGGANO |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.10.2010 Где: Донецк Репутация: нет Всего: нет |
Можно удаляемые просто на null (n) заменить. Например, получится должно так:
n 0 0 n n n n n n n n n n 2 2 1 1 n n 0 1 0 1 n n n n n 0 n 0 n n n n n Добавлено через 3 минуты и 7 секунд
Это ж для одномерного массива, а мне для матрицы надо |
||||
|
|||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 5 Всего: 121 |
Матрицы то какого размера?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
NAGGANO |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.10.2010 Где: Донецк Репутация: нет Всего: нет |
Ну как в примере, например, 6х6 размер.
|
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 5 Всего: 121 |
Ну в общем вы никаких ограничений на сложность алгоритма не поставили. Почему бы тогда не реализовать простейший перебор всех элементов (сложность будет О(N^2), N -- кол-во элементов матрицы)? На каком языке вы пишете?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
NAGGANO |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.10.2010 Где: Донецк Репутация: нет Всего: нет |
Мне кажется слишком уж фпс нервничать будет - в двойном цикле еще вложенных два цикла. Пишу на Actionscript 3.0
Возможно если обойтись только тремя циклами то нормально будет:
Канешна очень так делать не хочется) Каждый элемент в матрице - это объект класса. Может как-то сделать, чтобы каждый элемент смотрел, что возле него есть такой, как он и говорил это главному классу, который потом бы обрабатывал эти данные. Вот не знаю как сделать лучше( |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 5 Всего: 121 |
Преждевременная оптимизация -- зло)
Реализуйте простейший вариант, будет тормозить тогда уже надо думать как оптимизировать. Для перебора потребуется 36^2 сравнений. Если сравнение двух объектов вашей матрицы операция быстрая (можно сравнивать указатели или хеши для сложных объектов), то 1300 сравнений это немного. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
NAGGANO |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.10.2010 Где: Донецк Репутация: нет Всего: нет |
У меня вообще в игре матрица 10х10
![]() Ну попробую сделать сейчас такой перебор - может сильно и не будет тормозить) Но если есть еще какие-нить предложения - очень жду) |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 5 Всего: 121 |
А сколько возможных состояний может принять каждый элемент матрицы?
Если число небольшое, то можно хранить количество объектов определённого значения в каждой строке и столбце и обновлять эти значения при добавлении/удалении объекта. Когда понадобится выполнить замену всех элементов встречающихся более трёх раз вы уже будете знать какие элементы в каких строках и столбцах надо заменить. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
NAGGANO |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.10.2010 Где: Донецк Репутация: нет Всего: нет |
Он может либо существовать либо нет. Других состояний нет.У него есть переменная type - и вот именно эти поля мне и надо сравнивать.
Спасибо за идею - опробую и ее ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |