|
1 / 1 / 0
Регистрация: 10.02.2016
Сообщений: 43
|
||||||||||||||||
Решить задачу методом рекурсивного перебора с возвратом22.05.2016, 01:52. Показов 12373. Ответов 27
Метки нет (Все метки)
В Волшебной стране используются монетки достоинством A1, A2,..., AM. Волшебный человечек пришел в магазин и обнаружил, что у него есть ровно по две монетки каждого достоинства. Ему нужно заплатить сумму N. Напишите программу, определяющую, сможет ли он расплатиться без сдачи.
Входные данные На вход программы сначала поступает число N (1 <= N <= 109), затем - число M (1 <= M <= 15) и далее M попарно различных чисел A1, A2,..., AM (1 <= Ai <= 109). Выходные данные Сначала выведите K - количество монет, которое придется отдать Волшебному человечку, если он сможет заплатить указанную сумму без сдачи. Далее выведите K чисел, задающих достоинства монет. Если решений несколько, выведите вариант, в котором Волшебный человек отдаст наименьшее возможное количество монет. Если таких вариантов несколько, выведите любой из них. Если без сдачи не обойтись, то выведите одно число 0. Если же у Волшебного человечка не хватит денег, чтобы заплатить указанную сумму, выведите одно число -1 (минус один). Пример ВХОДНЫЕ ДАННЫЕ
0
|
||||||||||||||||
| 22.05.2016, 01:52 | |
|
Ответы с готовыми решениями:
27
Разработка приложения реализующего задачу перебора с возвратом
Решить задачу симплекс-методом и написать двойственную к ней задачу |
| 23.05.2016, 15:17 | |
|
Странно. Вчера вечером я как раз реализовал такую схему отсечений, даже дополнительный накопительный суффиксальный массив сумм списка монет предварительно рассчитал для этого. Это уменьшило время на остальных тестах, но не затронуло 25-й. Может посмотрю еще вечером...
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|||||||
| 23.05.2016, 16:13 | |||||||
Вообще-то они в условии грозятся, что одна монетка может весить до миллиарда, в таком случае сумма не поместится в int. Кстати, я из-за этого отбросил вариант с суммами, а зря, оказывается, так как он-то и оказался самым быстрым! Тринадцать тестов проходит за нулевое время, в том числе и 25-й:
0
|
|||||||
| 23.05.2016, 23:21 | |||||
|
Добавлено через 7 часов 0 минут Вести с полей. Не знаю, что вчера я не учел (может поздно ночью хуже соображал), но сегодня мои отсечения без сортировки проходят все тесты за такие времена:
0
|
|||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
| 24.05.2016, 03:21 | |
|
0
|
|
| 24.05.2016, 03:30 | |
|
Вижу. Но позволю себе пояснить мой скептицизм. На другом примере отсечений, которые я применил в самом первом варианте решения этой задачи - а именно: если при текущем поиске мы уже набрали монет больше, чем при текущем промежуточном оптимальном решении - нам надо прекращать поиск. Верная оптимизация? Да, верная. Будет хорошо работать? Да, будет. В БОЛЬШИНСТВЕ СЛУЧАЕВ. То есть, мы оптимизируем средний набор входных данных. Но всегда можно подобрать такой набор, при котором наши решения будут получаться с каждым разом все лучше и лучше, и на этих данных эта оптимизация не сработает. Так нужна ли она? В боевом коде - я считаю, да. Но в общем случае асимптотика алгоритма не изменится, ибо считается по худшему случаю. В последующих кодах я эту оптимизацию НЕ ПРИМЕНЯЛ.
Так и с сортировкой здесь, имхо. Есть алгоритмы, в которых очевидно и доказывается, что сортировка улучшает асимптотику в любом случае. даже наихудшем. В данном алгоритме я этого не вижу, хотя и утверждать отсутствие этого не берусь. А что в 25 тесте звезды и данные так сошлись, что сортировка помогла - ну.... я бы сказал, что это в каком-то смысле нечестные тесты. ЗЫ а вообще я просто поленился сначала нагуглить как делать сортировку массива по убыванию с использованием своей функции-компаратора Ну и надеялся на то, что не будет подтасовочных тестов под определенные условия и методы...
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 24.05.2016, 03:37 | ||
|
0
|
||
| 24.05.2016, 03:43 | |
|
90 + 10 единиц или 50 + 50... А еще на может быть надо набрать маленькую сумму... Хотя тут крупные отсекаются сразу, вы правы. Но если взять пример всех монет разного близкого и четного номинала, и набирать сумму на 1 меньше их удвоенной суммы - то тут хоть обсортируйся - придется все перебрать. Хотя здесь отлично помогает отсечение по оставшейся накопительной сумме... В общем, мне пока не все так очевидно.
0
|
|
|
0 / 0 / 0
Регистрация: 12.08.2022
Сообщений: 9
|
|
| 05.10.2023, 11:55 | |
|
_Ivana,
Здравствуйте. Подскажите пожалуйста Кто Нибудь, как изменить код из этой ветки что бы нашло за приемлемые время результат для: input: сумма 7260, кол - во монет 120 Список всех монет: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 Запустил Ваш код, М = 50 заменил на М = 120, уже 2 часа пытается, ничего не выводит на экран. Пожалуйста ??? Большое Спасибо за Ваш ответ
0
|
|
| 05.10.2023, 11:55 | |
|
Решить систему уравнений методом перебора Решить задаче о рюкзаке методом полного перебора через рекурсию Решить задачу методом золотого сечения и методом деления интервала пополам и написать программу на Pascal Решить задачу методом моделирования Решить задачу методом Галеркина Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|