Задача на комбинаторику Имеется X монет достоинствами N1, N2, N3, ..Nm рублей. Мальчик хочет узнать K - количество способов выбрать из этих монет Y рублей. Монеты одинакового достоинства считаются одинаковыми.

23 Авг 2019 в 19:42
163 +1
0
Ответы
1

Для решения этой задачи можно воспользоваться динамическим программированием. Создадим двумерный массив dp, где dp[i][j] будет обозначать количество способов выбрать j рублей из первых i монет.

Инициализируем dp[0][0] = 1, так как есть один способ выбрать 0 рублей из 0 монет (ничего не выбирать). Далее заполним массив следующим образом:

dp[i][j] = dp[i-1][j] + dp[i][j-coin[i]], если j >= coin[i]
dp[i][j] = dp[i-1][j], если j < coin[i]

Где coin[i] - это значение i-ой монеты.

После заполнения массива dp нужно вернуть значение dp[X][Y]. Это и будет искомое количество способов выбрать Y рублей из X монет.

20 Апр в 13:00
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 989 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир