Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.15;
Скачать: CL | DM;

Вниз

Алгоритм   Найти похожие ветки 

 
Din   (2005-12-18 20:30) [0]

всем добрый вечер
есть такая задача:

дан некоторый массив чисел (числа могут быть как положительными так и отрицательными)
необходимо следующее: найти максимальный подвектор массива
Подвектор - один или более(сумма ) элементов массива
Нужен алгоритм с минимальной сложностью
я на асме написал со сложностью N^2 , а надо хотя бы Log(N)
Подскажите как.(код программы не надо только принцип)


 
palva ©   (2005-12-18 20:47) [1]

Просматриваем все элементы и складываем положительные. Это, конечно, не Log(N), но хотя бы линейная сложность.


 
Din   (2005-12-18 20:51) [2]

учитывая что подвектор включает в себя элементы массива ПО ПОРЯДКУ а элементы положительные/отрицательные равновероятны то выигрыш не о4 большой, если массив генератором получен то там почти через один будут идти +/-


 
Din   (2005-12-18 21:06) [3]

например

85                         32
-1                         -28
72                          12
-2           или           -80
48                           40
-11                           -76

тут надо и отрицательные проверять
может еще кто какой способ подскажет


 
TUser ©   (2005-12-18 21:13) [4]


> найти максимальный подвектор массива
> Подвектор - один или более(сумма ) элементов массива

Результат - это просто сумма положительных элементов. За лог N - фиг сделаешь, каждый элемент хотя бы раз надо посмотреть.


 
Din   (2005-12-18 21:17) [5]

я может неточно выразился ПОДВЕКТОР - сумма последовательных элементов массива


 
TUser ©   (2005-12-18 21:23) [6]

Аааа. Ну так бы и сказанул. Задача решается динамиским программированием за линейное время. Храни информацию о двух подвекторах - самом распрекрасном из найденных до сих пор, и самом лучшем из заканчивающихся в текущей позиции. Просматриваешь весь массив, - и получаешь нужный результат.


 
Din   (2005-12-18 21:26) [7]

я просто думал что если подвектор то как бы само последовательные)


 
TUser ©   (2005-12-18 21:28) [8]

Ну, это ты так думал. А мы вольны прочитать

> Подвектор - один или более(сумма ) элементов массива

и сообразить, что надобно просто просуммировать положительные элементы, что и сказано в [1].


 
Din   (2005-12-18 21:30) [9]

тока я не совсем понял что ты имел ввиду ведь тады мы все равно весь массив просматриваем или нет?


 
Din   (2005-12-18 21:32) [10]

если тока положительные проблем бы не было, какие там сложности)))


 
TUser ©   (2005-12-18 22:42) [11]

У тебя есть число n. Оно бежит от 1 до длины массива. На каждом шаге есть а. начало и конец наибольшей (с всмысле определенной меры) цепочки, такие, что и начало, и конец - меньше либо равны текущему значению n.
б. начало наибольшей (...) цепочки, заканчивающейся в текущей позиции.

Вывбирай наибольшеее. Или я чего-то не понял?



Страницы: 1 вся ветка

Текущий архив: 2006.01.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.061 c
8-1123239406
dest81
2005-08-05 14:56
2006.01.15
Как можна управлять скоростью воспроизведения звуковых файлов


2-1135668070
oleggar
2005-12-27 10:21
2006.01.15
где эти сообщения ?


3-1132100889
Silver...
2005-11-16 03:28
2006.01.15
TRIGGER ... Access


2-1135677732
=<StelS>=
2005-12-27 13:02
2006.01.15
БД


14-1134818415
iamdanil
2005-12-17 14:20
2006.01.15
Компилятор-шифратор