6. Решение задач
9 апреля 2026 г.
Алгоритм решения задачи
- Чтение и разметка задач | Чтение задачи по алгоритму
- Могут возникнуть проблемы:
- Задачи-таймкиллеры – задачи, с запутанным условием, в котором может быть много бесполезной информации, но, как правило, простым решением
- Задачи на реализацию – как правило, такие задачи имеют длинное условие, из которого необходимо уметь выделять суть и долго и упорно писать программу (много программного кода)
- Задачи с коротким условием – содержат минимум информации, условие может быть понято неправильно или не понято совсем
- Могут возникнуть проблемы:
- Построение модели задачи
- Изначально в тексте задачи описана ситуация, т.е. запутанное условие задачи с большим количеством лишней информации
- Модель задачи – чётко сформулированная проблема без лишней информации с использованием математического описания условия
- Часто моделью задачи является известная проблема из математики или компьютерных наук
- Является сложным навыком для новичком, который необходимо постоянно тренировать
- Разбор примеров
- Необходимо для полного понимания задачи и формата входных/выходных данных
- Иногда в примерах могут быть даны узкие места задачи
- Декомпозиция задачи
- Разбиение сложной задачи на подзадачи меньшей сложности
- Без декомпозиции практически невозможно решить сложную задачу
- иногда требуется решение подводящей или сильно упрощенной задачи
- Следующий сложный навык для новичка, который необходимо постоянно тренировать после построения модели задачи
- Теоретическое решение задачи
- Решение задачи на листочке
- Если компьютер занят, можно писать псевдокод
- Оптимизация решения
- Если алгоритм полученного решения превышает максимальную допустимую сложность алгоритма задачи, то необходимо оптимизировать решение до оптимального
- Если невозможно оптимизировать алгоритм решения, то декомпозиция задачи недостаточна
- Программирование
- Написание кода для теоретического решения
- Тестирование
- Перед отправкой решения в тестовую систему необходимо на своём компьютере его протестировать
- Желательно тестировать программу в тестирующей системе ("Запуск") и использовать компилятор, на котором решение будет отправлено, т.к. у компиляторов могут быть отличия, что приведёт в неправильному ответу
- Необходимо заранее готовить тесты на "узкие места"
Чем серьёзнее ошибка была обнаружена, тем на более раннем этапе решения задачи она возникла.
Что делать, если нет идей по решению задачи?
- Если нет более простых задач, то думать до конца:
- Необходимо задавать себе правильные и разнообразные вопросы и декомпозировать задачу разными способами
- Прибегнуть к помощи сокомандников
- Если теоретическое решение задачи на найдено за 30 минут, то следует попробовать решить другие задачи