Тест по информатике: Одномерное динамическое программирование на подсчет количества вариантов
Класс: 11
Вопрос 1
Какова основная идея динамического программирования?
- A) Использование рекурсии для поиска решения
- B) Разбиение задачи на подзадачи и сохранение их результатов
- C) Использование жадных алгоритмов
- D) Генерация всех возможных вариантов
Правильный ответ: B
Вопрос 2
Какой алгоритм используется для подсчета количества способов, которыми можно достичь заданной суммы \( S \) с помощью заданного количества монет?
- A) Жадный алгоритм
- B) Рекурсия с мемоизацией
- C) Одномерное динамическое программирование
- D) Метод полного перебора
Правильный ответ: C
Вопрос 3
Как можно описать состояние в задаче о подсчете количества вариантов?
- A) Количество элементов в массиве
- B) Текущий индекс и набранная сумма
- C) Количество используемых операций
- D) Время выполнения алгоритма
Правильный ответ: B
Вопрос 4
Какова сложность алгоритма динамического программирования для задачи подсчета количества способов разбиения числа \( n \) на суммы?
- A) \( O(n) \)
- B) \( O(n^2) \)
- C) \( O(n \cdot m) \) (где \( m \) — количество видов элементов)
- D) \( O(m) \)
Правильный ответ: C
Вопрос 5
Какой метод обычно используется для вычисления значения в динамическом программировании?
- A) Построение рекурсивного дерева
- B) Использование массива для хранения промежуточных результатов
- C) Прямой подсчет всех возможных вариантов
- D) Поиск оптимального решения на каждом шаге
Правильный ответ: B
Вопрос 6
В задачи о разбиении числа на суммы, какова инициализация массива результатов?
- A) Все элементы равны -1
- B) Первое значение равно 1, остальные 0
- C) Все элементы равны 0
- D) Все элементы равны 1
Правильный ответ: B
Вопрос 7
При использовании динамического программирования, что происходит с временной сложностью, если мы повторно используем уже вычисленные результаты?
- A) Временная сложность увеличивается
- B) Временная сложность остается прежней
- C) Временная сложность уменьшается
- D) Временная сложность становится линейной
Правильный ответ: C
Вопрос 8
Какой из следующих факторов не влияет на количество способов разбиения числа?
- A) Наличие повторяющихся элементов
- B) Порядок разбиения
- C) Ограничения на элементы
- D) Используемая память алгоритма
Правильный ответ: D
Вопрос 9
Что такое мемоизация в контексте динамического программирования?
- A) Запись всех возможных вариантов в файл
- B) Хранение промежуточных результатов для устранения повторных вычислений
- C) Оптимизация алгоритма через уменьшение размера входных данных
- D) Использование случайных чисел для генерации решений
Правильный ответ: B
Вопрос 10
Что из следующего верно для динамического программирования?
- A) Не подходит для решения задач, требующих большого объема памяти
- B) Всегда эффективнее рекурсивного решения
- C) Эффективно для задач с пересекающимися подзадачами
- D) Используется только в главах о графах
Правильный ответ: C
Тест завершен! Проверяйте свои ответы и удачи на экзаменах!