![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | |||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Цитата:
![]() Цитата:
![]() уж, даже в моём случае, уж как минимум, нужно СНАЧАЛА проверять значение, что оно больше максимума (A[i,j]>result), и только потом искать, имеет ли это значение дубликаты ( isHasDublicate() )! Но и то, что мой вариант осуществляет поиск для каждого числа - это, имхо, не есть оптимально. Вариантов решения можно множество придумать. Например, ещё один: брать очередное значение массива i,j, переводить индексы в один (превратить двухмерный массив в одномерный плоский [1..N*M], искать если ли дубликаты ПРАВЕЕ текущего, и если есть, их уже рассматривать как максимум. массивы маленькие, как их не перебирай, всё равно быстро получается ![]() |
|||
![]() |
![]() |
![]() |
#12 | |
Пользователь
Регистрация: 11.11.2013
Сообщений: 74
|
![]() Цитата:
![]() Можете рассказать алгорит, а я уже сам себе закодю, как знаю) Препод сказал максимально оптимальный средствами, которые мы знаем. __________________ Оверквотинг (overquoting) на форуме запрещён. Не злоупотребляйте избыточным цитированием. Если Вы отвечаете на предыдущее сообщение, нет необходимости приводить его полностью в своем ответе. В крайнем случае выберите нужный фрагмент и процитируйте его. Модератор. Последний раз редактировалось Serge_Bliznykov; 13.11.2013 в 13:00. |
|
![]() |
![]() |
![]() |
#13 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
для каждого элемента массива (два вложенных цикла - по строками и столбцам) проверяем, если ли в массиве дублирующие значение (используем для этого написанную функцию, которая перебирает элементы массива, сравнивает их с искомым значением и при этом пропускает сам искомый элемент - мы для этого в фукнцию передаём индексы проверяемого элемента). Если для элемента есть дубликаты - то сравниваем его с максмальной величиной (для первого дублирующего элемента не сравниваем, а просто запоминаем значение, как максимальное), если значение дублирующего элемента больше, чем запомненное максимальное значение - то берём его в качестве максимального. Дополнительно. для того, чтобы определить, был ли хоть один дублирующий элемент в массиве - заводим дополнительный флаг. Перед циклом ставим ему признак false =="Нет дублирующих элементов в массиве", а в цикле взводим этот флаг в true если нашли дублирующий элемент. p.s. Вы насчёт варианта с сортировкой ничего не сказали.. Не нужен? |
|
![]() |
![]() |
![]() |
#14 | |||
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]() Цитата:
![]() ![]() Закрыли вопрос.. Цитата:
Цитата:
Мои мысли в слух : И так.. Что если создать множество и сливать туда элементы? А далее бежать по массиву и искать максимум, в случае, если a[i, j] in MSet.. Множество в паскале имеет ограничение на 256 элементов, что делает этот вариант не очень легким в реализации.. Но если использовать массив MSet : array [-MaxInt div 8 .. MaxInt div 8] of Byte.. баловаться битами (где-то я выставлял код вывода).. НО такой массив слишком огромен для такой задачи.. Таким образом я избавился от своего первоначального варианта.. Думаем дальше.. Если сливать элементы в НЕ отсортированный массив? И так.. проверить есть ли элемент в массиве за O(N) Добавить элемент за O(1) Красота.. А если сортировать массив? Поиск в массиве - O(log N) (дихотомия) Добавление - тут сложнее.. сначала за O(log N) ищем место.. далее сдвиг.. за O (N / ?).. // Прошу помощи! ![]() Другой вариант.. сливать в кучу.. Поиск - я, увы, не могу предположить.. Добавление - O(log N)... Выложу общий код Код:
Боюсь поиск в куче элемента будет = N.. Последний раз редактировалось Poma][a; 14.11.2013 в 07:06. |
|||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Матрица Pascal | cuntek | Помощь студентам | 1 | 25.12.2010 21:00 |
Матрица (Pascal) | Алиса. | Помощь студентам | 1 | 21.12.2010 15:11 |
Матрица в Pascal | Nastik | Помощь студентам | 2 | 07.06.2010 21:55 |
Матрица в Pascal | W_P | Помощь студентам | 7 | 05.03.2008 05:51 |