Алгоритмы и Структуры Данных. Урок 2: Мемоизация.

preview_player
Показать описание

Рекомендации по теме
Комментарии
Автор

Спасибо за курс! Самые понятные объяснения для тех, кто спал на лекциях в универе или их вообще не было :))

vrqmtkv
Автор

Наиль, как всегда прекрасно. Мой совет - если кто не понял как это работает - поставить число, допустим, 10 и пройтись дебагером - будет все наглядно - как проинициализируется массив -1 и как программа начнет проверять числа с числа n массива, опускаясь до 2 элемента и после этого заполняя массив до числа n

bvlbcfo
Автор

Это как раз и есть образец элемента динамического программирования. Автору большой респект за уроки.

olegchumin
Автор

Огромное спасибо за такие подробные разъяснения)
Супергерой нашего времени 🔥Огромный жирный палец вверх 👍

BoyarinLex
Автор

Уже на n = 93 пошли отрицательные числа, long закончился.
Используйте BigInteger и не забывайте про метод сложения - add и valueOf(n).

yeson
Автор

Комент вообще не по курсу, лучшая благодарность автору это просмотр рекламы до конца. Автор получит комисионные за просмотр)

DimarikCanada
Автор

А так же можно использовать Option и еще красивее будет.

stanislav
Автор

Спасибо, про меморизацию не слышал ранее.
А по сути содержание такое: заполнить массив чем-угодно, (например 0). Если текущий эл. массива равен этому элементу, продолжить заполнять массив, иначе вернуть последний эл. массива

KingDog
Автор

На прошлом уроке подумал, что можно же было запоминать, например, n3 = 3. n4 = 5 и тд в массив. И дергать эти промежуточные числа из массива.

Tokamame
Автор

можно еще сократить память - использовать массив размерностью не n + 1, а три, и при каждой итерации сдвигать результаты. Рассмотренный Вами метод все равно сосчитает все значения чисел Фибоначи до n, а в результат все время выводится только одно число. Я про метод FibEffective

mornier
Автор

Спасибо Вам за труды! Просьба выложить плейлист по алгоритмам на Python!)

kedr
Автор

В текущей реализации можно получить очень интересный результат при `n = 99 `=)

maximbelousov
Автор

зачем нужно было заполнять массив -1-ми, и не совсем понятно 18ая строка. Кто понял обьясните пожалуйста буду очень рад :)

bexcrypto
Автор

Правильно ли я понимаю, что алгоритм быстрого преобразования Фурье - это дискретное преобразование Фурье с примененной мемоизацией?

andrsam
Автор

Интересно, если в принципе фактор скорости выполнения программы можно определить "на глаз", то как понять насколько эффективно выделение памяти для того или иного подхода решения проблемы? Может есть плагины или отдельные методы для этого?

dxzdfks
Автор

long result = fibNaive(n-1, mem) + fibNaive(n-2, mem);


Каким образом на данном этапе происходит сложение? Хоть тыкните, в какую сторону читать)

witaliden
Автор

Как в этом так и в предыдущем уроке, 100е число фибоначи не получается, похоже не хватает длины long. Для интереса в цикле от 0 до 100 запусти!!! увидишь, что после 90 начинаются отрицательные числа!!!!

mikegrig
Автор

без массива еще в ~2 раза быстрее.
long res = 0;
long prev0 = 0;
long prev1 = 1;

for (int i = 2; i <= count; i++) {
res = prev1 + prev0;
prev0 = prev1;
prev1 = res;
}

return res;

alexmakarov
Автор

Я так понимаю это по книжке грокаем алгоритмы? ))

EEEppt
Автор

Не понимаю, почему массив создаем на 101 элемент [n+1] ???

whyeids