![]() |
|
|
![]()
|
|
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: нет Всего: 23 |
Дали такую задачу:
Может, кто с такой задачей сталкивался. Я понимаю, что бывает и сложнее, но тут неясно, задаётся ли размерность подматрицы... Спасибо за помощь. |
|||
|
||||
| Dr.Drunk |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 12.1.2004 Где: Волжский Репутация: нет Всего: нет |
NiJazz, ну значит примерно так:
1. Берем первый эл-т матрицы и прибавляем к нему следующий эл-т строки до N потом идем по столбцам до M (где N - колво эл-ов в строке матрицы, М - количество строк в матрице) , таким образом получаем макс. сумму эл-ов и это и является подматрицей данной матрицы, что не противоречит ни условию ни определению. 2. Следовательно если задана размерность (а она должна быть задана) то в пункте 1 идем не до N и M, а до n и m, n и m - размерность подматрицы. перебирая элементы матрицы находим макс. сумму эл-ов (перебираем элементы с индекса (1,1) до (N-n,M-m)) 3. Желательно еще запоминать начальный индекс, подматрицы в матрице, которая дает макс. сумму эл-ов на текущей иттерации. Чтобы потом не было проблем с выводом на экран Это сообщение отредактировал(а) Dr.Drunk - 26.4.2004, 10:09 --------------------
_Theory_ is when you know everything but nothning works._Practice_ is when everything works but no one knows why._IN THIS PLACE_ we're combining theory and practice -nothing works and no one knows why! |
|||
|
||||
| DenDen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 25.3.2004 Репутация: нет Всего: нет |
Строго говоря, существует такой способ.
Примем во внимание, что скорее всего такая матрица содержит один из максимальных n элементов. Если элементов n, то в матрице точно содержиться элемент не ниже dim(need_matrica)/N*N(или в случае достаточно гладкого распределения N_max*((m/n)^2)),( В данном случае dim-число элементов) что уже облегачает задачу. Далее следует рисковый кусок: весь массив нормируем на этот элемент и ищем куски подходящей размерности содержащие максимальную плотность ненулевых элементов(основная чать массива после нормировки 0). Скорее всего 1 из трех-четырех таких кусков и есть нужная матрица. Не хочешь рисковать другой способ- тестить только куски содержащие ненулевые элементы. Скорость варианта Dr.Drunka-O((N-m)*(N-m)*scorost_summirovania_matr_m*m); Данный вариант.O((N^2)*scorost_sdviga+(N/2)*scorost_summirovania_matr_m*m); Думайте сами, решайте сами. |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: нет Всего: 23 |
Если кому интересно, вот как я сделал. Сделано совсем без премудростей, наверняка есть варианты более эффективной реализации. Но, главное, что работает.
Я очень жду отзывов и рекомендаций.
|
|||
|
||||
| Dr.Drunk |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 12.1.2004 Где: Волжский Репутация: нет Всего: нет |
DenDen вот матрица для которой твой алгоритм не сработает
55 1 1 0 1 0 0 0 1 0 0 56 подматрица размером 2Х3 или 3х2 Добавлено @ 07:23 NiJazz, что и требовалось доказать просто и главное ответ правильный получил Это сообщение отредактировал(а) Dr.Drunk - 27.4.2004, 07:19 --------------------
_Theory_ is when you know everything but nothning works._Practice_ is when everything works but no one knows why._IN THIS PLACE_ we're combining theory and practice -nothing works and no one knows why! |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: нет Всего: 23 |
Dr.Drunk, почему не сработает? Он просто выведет не все матрицы.
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |