Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Маркус Амбрелла Ученик (20), на голосовании 2 дня назад
Коллеги, у меня есть реальный шанс увеличить з/п, если внутри компании переведусь в разработку на Java.
Собственно, сам синтаксис не вызывает сложности. У меня другая проблема: не умею решать задачи. Почти всегда, за исключением фигни типа "вывести массив/матрицу", "найти min и max число" и т.п.
Вот, сегодня попалась задача:
Написать программу, которая запрашивает число N и выводит первые N чисел последовательности
Фибоначчи (N первых чисел: 0, 1, 1, 2, 3, 5, 8, ...)
Я вообще только узнал, что такое число Фибоначчи. Но как с этим работать - без понятия. Смотрю на условие задачи и как идиот, ничего в голове родить не могу. И так всегда. Синтаксис языка Java, как инструмент, я освоил, но пользоваться этим инструментом не умею. Я не умею решать задачи... У меня проблемы с абстрактно-логическим и алгоритмическим мышлением.
Такое лечится? Решил изучать математику с 7 по 11 класс. Возможно, это поможет прокачать мозг... Также хотел приступить к алгоритмам и стр-рам данных Н. Вирта, но понял там очень мало. Не хватает пререквизитов - базовых знаний по математике и правильно настроенных мозгов.
Помогите советом! Премного благодарен!
Голосование за лучший ответ
Литвин Фитнесов Ученик (158) 1 месяц назад
тут надо искать одно из концетрированных чисел и по коду упразднять фибоначчи, обычно это делается быстро не составляет труда, впрочем все как и делал Беслан Друид
Krab Bark Искусственный Интеллект (300605) 1 месяц назад
Ну так это и есть изучение программирования. А язык программирования - всего лишь система условных обозначений для записи того, что в голове у программиста :) Читай книги по алгоритмам.
Маркус АмбреллаУченик (20) 1 месяц назад
Да, согласен) Вот только проблемки с этим. Помимо Вирта есть что-нибудь годное? Чувствую, что базы не хватает. Он часто там оперирует математикой... Придётся уже для таких книг математику подтягивать.
Сказали уже: читать книги по алгоритмике и прежде всего мировую и отечественную классику! Нам в школе советовали Окулова ("Мышление в алгоритмах"), Потопахина ("Решение сложных задач"), Вирта, Ахо-Ульмана-Хопкрофта, Кнута (только то́м, посвящённый синтаксическим алгоритмам вроде ещё не переведён, поэтому по синтаксической алгоритмике надо изучать что-то другое), Кормена-Лейзерсона-Ривеста-Штайна, Голуба, Левитина и т.д. Довольно много литературы по отдельным темам: расчётные техники, моделирование на ЭВМ (компьютерная симуляция), интернет-технологии (в т.ч. интеллектуальные), AI/IS, BigData&Geostatistics, etc. - но это уж Вам выбирать что конкретно из этого всего Вам лично нужно...
Олег Дипникович Гуру (4689) 1 месяц назад
Решайте задачки по программированию. Начинайте с лёгких
Андрей Высший разум (481864) 1 месяц назад
Начни с учебников программирования для начинающих:

Вирт, "Алгоритмы и структуры данных"
Кормен, "Алгоритмы. Вводный курс".

И нет, школьная математика не поможет. Нужна дискретная математика. Целые числа, матлогика, множества, графы и т.д. - это всё подразделы дискретной математики.

Что касается чисел Фибоначчи, то тут удобнее всего использовать динамическое программирование: когда мы движемся от старта к финишу, на каждом шаге вычисляя новое значение:
 F[0] = 0
F[1] = 1
F[2] = F[0] + F[1]
F[3] = F[1] + F[2]
F[4] = F[3] + F[4]
...
F[N] = F[N - 2] + F[N - 1]
Маркус АмбреллаУченик (20) 1 месяц назад
Благодарю Вас за совет! Но всё равно, чувствую что знаний школьной математики не хватает. Почитал, наверное, четверть книги Вирта. Понял не очень многое: он там уже оперирует математикой. Придётся подтягивать,
А по дискретке есть какие-нибудь годные книги, зарекомендовавшие себя в глазах специалистов?
Андрей Высший разум (481864) Маркус Амбрелла, Слишком давно учился и с современными учебниками не знаком. На слуху только "Конкретная математика" Кнута, но там далеко не все темы.
Джек Барден Ученик (246) 1 месяц назад
Читать Кнута иногда перед сном. Но мне больше настоящая математика нравится, то есть - непрерывная
Алекс Куха Высший разум (476045) 1 месяц назад
Мозг "прокачать", увы, не получится, это не мышца. Что природа дала, с тем и придётся жизнь прожить.
Можно много времени потратить на те же источники, но и времени потребуется больше и результат окажется нулевым. Там, где одни пролистывают матчасть за час-другой, другим требуются дни
Саша Мультибоев Мастер (2072) 3 недели назад
Если совсем 0, то Грокаем алгоритмы прочитай, очень хорошая книжка
Мундаба Кондерюков Мастер (1479) 3 дня назад
Я считаю, что как-никак задача математическая, и чем лучше знаешь математику, тем легче будет её решить.

Когда будешь уже работать, задачи будут скорее всего нематематические, а в другой сфере. И вот в этой сфере будешь постепенно совершенствоваться.

Ну и, как мне видится, в программировании фактор интеллекта (текучего) очень важен. Желательно бросить курить, ограничить потребление алкоголя, хорошо высыпаться, ограничить плохой стресс и прочее.

Слышал точку зрения, что после определённого возраста (лет 50 вроде) уже очень трудно заниматься программированием из-за снижения уровня здоровья. Так же, как трудно в этом возрасте играть в шахматы.

Ну и ещё, когда у меня не получается решить такую задачу, когда я прекращаю пытаться решить, я смотрю ответ и не просто запоминаю шаблон, а думаю, КАК Я ДОЛЖЕН БЫЛ МЫСЛИТЬ, ЧТОБЫ ЕЁ РЕШИТЬ. В чём была моя недоработка в мышлении, под каким углом я не посмотрел на задачу, под которым мог бы посмотреть. Что мне учесть и как мыслить, чтобы лучше решать и другие задачи.
Не знаю, понятна ли мысль, наверно, лучше на конкретном примере объяснять)
Мундаба КондерюковМастер (1479) 3 дня назад
Кстати, я тоже решал то ли эту задачу, то ли очень похожую. Тоже про Фибоначчи. Тоже испытал сложности. Да, сложны такие, объективно, не для всех они.
Похожие вопросы