КУРС ПО GIT: www.udemy.com/course/git-alishev/?referralCode=71994763964B8E2E6A4E
@ЮлияПавленко-щ7к5 жыл бұрын
Спасибо за курс! Самые понятные объяснения для тех, кто спал на лекциях в универе или их вообще не было :))
@olegchumin66342 жыл бұрын
Это как раз и есть образец элемента динамического программирования. Автору большой респект за уроки.
@BoyarinLex Жыл бұрын
Огромное спасибо за такие подробные разъяснения) Супергерой нашего времени 🔥Огромный жирный палец вверх 👍
@АлександрМаркелов-ш3ж4 жыл бұрын
Наиль, как всегда прекрасно. Мой совет - если кто не понял как это работает - поставить число, допустим, 10 и пройтись дебагером - будет все наглядно - как проинициализируется массив -1 и как программа начнет проверять числа с числа n массива, опускаясь до 2 элемента и после этого заполняя массив до числа n
@manOfPlanetEarth4 жыл бұрын
👍🏼
@Дима-з3з7ц2 жыл бұрын
помогло, спасибо👍
@igorkudryk21996 жыл бұрын
Спасибо за качественные уроки!
@hydrock97386 жыл бұрын
Хорошие уроки! Спасибо.
@yeson65812 жыл бұрын
Уже на n = 93 пошли отрицательные числа, long закончился. Используйте BigInteger и не забывайте про метод сложения - add и valueOf(n).
@denistalko65853 жыл бұрын
Очень интересно, спасибо огромное!
@pertshgalstyan61896 жыл бұрын
Он вернулся 😎😎😎
@Darmenw4 ай бұрын
22:15 увеличив затрать память, снизим выполнение время выполнение
@Tokamame5 жыл бұрын
На прошлом уроке подумал, что можно же было запоминать, например, n3 = 3. n4 = 5 и тд в массив. И дергать эти промежуточные числа из массива.
@stanislav11256 жыл бұрын
А так же можно использовать Option и еще красивее будет.
@Andrzej39353 жыл бұрын
Спасибо огромное!
@alexanderostretsov25084 жыл бұрын
Топовый мем)
@mornier3 жыл бұрын
можно еще сократить память - использовать массив размерностью не n + 1, а три, и при каждой итерации сдвигать результаты. Рассмотренный Вами метод все равно сосчитает все значения чисел Фибоначи до n, а в результат все время выводится только одно число. Я про метод FibEffective
@siegfried_dd6 жыл бұрын
Отлично!)
@DimarikCanada5 жыл бұрын
Комент вообще не по курсу, лучшая благодарность автору это просмотр рекламы до конца. Автор получит комисионные за просмотр)
@АртемТит-в5ь4 жыл бұрын
это правда?
@ХорхеРодригез Жыл бұрын
Интересно, если в принципе фактор скорости выполнения программы можно определить "на глаз", то как понять насколько эффективно выделение памяти для того или иного подхода решения проблемы? Может есть плагины или отдельные методы для этого?
@AroundIntellect Жыл бұрын
Фактор памяти тоже определяется на глаз. Любая дополнительная переменная это О(1), массив и схожие структуры это О(n). Единственное помнить нужно, что нельзя считать за память выход функции. Пример по видео: Подаётся число n и требуется найти n-е число Фибоначчи. Автор для этого вводит целый массив, который равен О(n), возвращая только последний элемент массива, значит общие затраты памяти O(n). При этом, если бы по условию задачи требовалось вернуть все числа Фибоначчи до n, включительно, то этот же метод занимал бы О(1) по памяти, так как выходной массив не шёл бы в учёт, ведь без этого массива не получится вернуть массив, как бы это ни звучало. Так же хочу отметить, что О(n) по памяти для этой задачи не является оптимальным решением. Можно просто создать 2 переменные fib0 = 0 и fib1 = 1 перезаписывая их значение. То есть fib1 += fib 0; fib0 = fib1 - fib0. В конце необходимо вернуть fib1. Этот способ позволить уменьшить затраты памяти до константы, при этом скорость остаётся линейной.
@footballlife99315 жыл бұрын
спасибо!
@bexcrypto2 жыл бұрын
зачем нужно было заполнять массив -1-ми, и не совсем понятно 18ая строка. Кто понял обьясните пожалуйста буду очень рад :)
@andrsam36825 жыл бұрын
Правильно ли я понимаю, что алгоритм быстрого преобразования Фурье - это дискретное преобразование Фурье с примененной мемоизацией?
@maximbelousov15606 жыл бұрын
В текущей реализации можно получить очень интересный результат при `n = 99 `=)
@AndryMax6 жыл бұрын
очень странно, кто нибудь может объяснить такой результат? upd: а ну вроде потому что лонга не хватает, нужно использовать бигИнтеджер upd2: проверил с бигИнтеджер, всё идеально
@witaliden5 жыл бұрын
long result = fibNaive(n-1, mem) + fibNaive(n-2, mem); Каким образом на данном этапе происходит сложение? Хоть тыкните, в какую сторону читать)
@Qnoize5 жыл бұрын
ну наверное там, где стоит + ... ничего собственно в вычислении не поменялось, только результат присвоился переменной result
@kr85252 жыл бұрын
Здрастуйте, почему массив должен быть размером n+1, а не просто n?
@alexander_brun2 жыл бұрын
Математики и программисты любят считать не с единицы, а с нуля. Поэтому с массивами и числами Фибоначчи нужно закладывать в размер этот первый нулевой. То есть десятый элемент будет по счету 11ый.
@Darmenw4 ай бұрын
22:15(1 первый урок) На первом уроке сказал увеличив затрать память, снизим выполнение время программа
@ИгорьБирт-я2щ4 жыл бұрын
Не понимаю, почему массив создаем на 101 элемент [n+1] ???
@pavelkravchenko70054 жыл бұрын
Потому что при n = 0 в массиве должно лежать одно число - 0. Соответственно, при n = 1, их уже два - 0 и 1.
@Darmenw4 ай бұрын
22:15(1 первый урок) На первом уроке сказал увеличив затрать память, снизим выполнение время программа
@kedr1234 жыл бұрын
Спасибо Вам за труды! Просьба выложить плейлист по алгоритмам на Python!)
@Roma40864 жыл бұрын
мемоизация - это и есть динамическое программировние?
@alishevN4 жыл бұрын
похоже, но не совсем то же самое.
@Roma40864 жыл бұрын
@@alishevN а правильно ли сказать так, что при динамическом программировании мы решаем проблему рекурсивно, т.е. перебираем все возможные варианты и выбираем тот вариант, который дает манимум или максимум?
@EEEppt3 жыл бұрын
Я так понимаю это по книжке грокаем алгоритмы? ))
@agweprint273 жыл бұрын
Наиль, скажи, а почему ты не поместил мем в метод фибнаив? Зачем он в мэйне, да и лишние аргументы у метода
@alishevN3 жыл бұрын
Попробуй сделать так)
@agweprint273 жыл бұрын
@@alishevN всё, догнал) он же постоянно будет создавать заново при обращении :)
@mikegrig9032 жыл бұрын
Как в этом так и в предыдущем уроке, 100е число фибоначи не получается, похоже не хватает длины long. Для интереса в цикле от 0 до 100 запусти!!! увидишь, что после 90 начинаются отрицательные числа!!!!
@XIRON863 жыл бұрын
Давайте создадим массив мемов)))
@stanislav11256 жыл бұрын
Зачем заполнять массив -1, чем плох != null ?
@alexanderwicked89906 жыл бұрын
Зачем заполнять массив -1? Потому что факториал всегда положителен, и -1 точно не пройдёт. А вы, прежде чем писать этот комментарий, сами хоть попробовали заполнить массив пустыми значениями через Arrays.fill? И как, всё хорошо, полёт нормальный?
@andretiidook70226 жыл бұрын
Лонг это не объект
@stas49855 жыл бұрын
@@andretiidook7022 ошибаешься малой,лонг с большой буквы это обьект
@dressran36149 ай бұрын
герберт шилдт считает иначе)))@@stas4985
@alexmakarov25042 жыл бұрын
без массива еще в ~2 раза быстрее. long res = 0; long prev0 = 0; long prev1 = 1; for (int i = 2; i
@AroundIntellect Жыл бұрын
Слабо без переменной res?)
@alexmakarov2504 Жыл бұрын
@@AroundIntellect Можно, просто у меня привычка всегда результат объявлять названием res и его возвращать. Компилятор это оптимизирует, а для меня удобнее.
@AroundIntellect Жыл бұрын
@@alexmakarov2504 В этом плане вопросов нет, читаемость бустит, а это стоит и 10 лишних переменных. Но лично я алгоритмы привык решать максимально оптимально, хоть и нечитаемо
@alexmakarov2504 Жыл бұрын
@@AroundIntellect Да, согласен, тут не поспоришь, а я еще и плох в алгоритмах, к сожалению.
@AroundIntellect Жыл бұрын
@@alexmakarov2504 Кстати, достаточно больно решать алгоритмы на джаве... Толи дело питон, один кайф, 2-3 строчки и оптимальное решение готово 😂😅 Хотя программирование на джаве мне куда больше нравится
@sashaosaula33254 жыл бұрын
что то даже с дэбаггером не могу понять(((
@Бардзо Жыл бұрын
ничего непонятно,видос ток отбивает желание разбираться в теме(
@Darmenw4 ай бұрын
22:15(1 первый урок) long [ ] arr = long arr[n+1} На первом уроке сказал увеличив затрать память, чтобы снизить время выполнение программа @alishevN да ?