|
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 20
|
||||||
Задача о рюкзаке методом динамического программирования03.01.2019, 13:18. Показов 26653. Ответов 13
Метки нет (Все метки)
Здравствуйте, помогите, пожалуйста, реализовать до конца программу.
Входные данные должны быть следующими: Данные подаются на стандартный поток ввода. Пустые строки игнорируются. Первая строка содержит натуральное число - максимальную массу предметов, которую выдержит рюкзак. Каждая последующая содержит два неотрицательных числа: массу предмета и его стоимость. Выходные: Первая строка содержит два числа: суммарную массу предметов и их суммарную стоимость. В последующих строках записаны номера предметов, которые были помещены в рюкзак, в порядке возрастания номера. Результат работы программы выводится в стандартный поток вывода. Входные данные я реализовал, а вот с выходными проблема. Не понимаю как выводить номера элементов, вошедшие в рюкзак. Прикладываю код (VS2017):
И еще, у меня не корректно работает алгоритм "засовывания" в рюкзак: на данных 165 23 92 31 57 29 49 44 68 53 60 38 43 63 67 85 84 89 87 82 72 Результат вообще не выводится. Можете, хотя бы направить в каком направлении думать...
0
|
||||||
| 03.01.2019, 13:18 | |
|
Ответы с готовыми решениями:
13
Задача коммивояжера методом динамического программирования Игра Ним методом динамического программирования Задача о рюкзаке методом полного перебора. Нужно пояснение по коду |
|
393 / 263 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
|
||||||
| 03.01.2019, 16:00 | ||||||
Сообщение было отмечено BoumRZ как решение
Решение
1
|
||||||
|
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 20
|
|
| 03.01.2019, 16:01 [ТС] | |
|
Извини, а можешь вкратце объяснить что происходит в этом коде?
0
|
|
|
393 / 263 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
|
|
| 03.01.2019, 16:02 | |
|
BoumRZ, тут все расписано, мне лень,сорян
http://neerc.ifmo.ru/wiki/inde... 0.B8.D1.8F
0
|
|
|
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 20
|
|
| 03.01.2019, 16:04 [ТС] | |
|
LegionK, ладно, в любом случае огромное спасибо. Вы мне очень помогли.
Теперь мне осталось получше разобраться..
0
|
|
|
393 / 263 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
|
|
| 03.01.2019, 16:05 | |
|
BoumRZ, вы хоть проверьте,чтобы работало, я же тоже накосячить могу
0
|
|
|
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 20
|
|
| 03.01.2019, 16:13 [ТС] | |
|
LegionK, на том сайте, который Вы скинули компилируется хорошо. Я проверял: заново компилировал.
А вот в VS почему-то не хочет компилироваться. Пишет, что выражение в индексе матрицы должно быть константным, но при этом, не n, не w нельзя делать константными, иначе изменять их нельзя будет.. Возможно, это баг самой VS, потому что бывает с ней нечто подобное: на других компиляторах компилируется, а на ней -нет.
0
|
|
|
393 / 263 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
|
|
| 03.01.2019, 16:29 | |
|
BoumRZ, потому что в vs нельзя указать размер массива переменной
https://ideone.com/pqt2eS За то,что компилироваться будет - я гарантирую,лучше корректность ответа бы проверили
0
|
|
|
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 20
|
|
| 03.01.2019, 17:36 [ТС] | |
|
LegionK, Я проверил решение на ejudge и тест показал, что программа не работает на следующих данных:
750000000 70000000 135 73000000 139 77000000 149 80000000 150 82000000 156 87000000 163 90000000 173 94000000 184 98000000 192 106000000 201 110000000 210 113000000 214 115000000 221 118000000 229 120000000 240 Как можно решить эту проблему?
0
|
|
|
393 / 263 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
|
|
| 03.01.2019, 18:09 | |
|
BoumRZ, и какой вердикт он отдает? Wrong answer/runtime error/time limit /memory limit?
0
|
|
|
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 20
|
|
| 03.01.2019, 18:12 [ТС] | |
|
LegionK,Превышено ограничение на время. А пишет "Max. CPU time: 0.612"
0
|
|
|
393 / 263 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
|
|
| 03.01.2019, 18:22 | |
|
BoumRZ, не, с этим я тебе помочь уже не могу,сорян, даже Вики грит,что w больше 10^7 делать не стоит. Алгоритм же NW сложность имеет, это порядка 15*7,5*10^8 операций. Ну это даже чуть больше,чем, например, максимальные 10^9 для 1 сек в проверяющей системе timus.
Так что извини,но с этим я помочь не могу
0
|
|
|
0 / 0 / 0
Регистрация: 17.12.2018
Сообщений: 20
|
|
| 03.01.2019, 18:50 [ТС] | |
|
У меня есть идея: найти НОД для весов и на него разделить массы рюкзака и предметов.
Пока подумаю над этой идеей и над её реализацией, а, раз это форум, решил об этом сюда написать, вдруг у кого-то раньше появятся идеи как реализовать)
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 03.01.2019, 19:14 | |
|
BoumRZ, Ну есть еще вариант использования эвристики вместо брута. Итемы сортируются по невозрастанию веса и впихивается начиная с наибольшего что влезет. Не гарантирует наиболее оптимального решения но приемлемо оптимальное будет за примерно линейное время. Эту эвристику в принципе все системы раскроя заготовок пользуют в реальной жизни.
0
|
|
| 03.01.2019, 19:14 | |
|
Помогаю со студенческими работами здесь
14
Решение задач динамического программирования методом прямой прогонки Задача о рюкзаке методом динамического программирования, исправить код Решение задачи о рюкзаке методом динамического программирования Задача методом динамического программирования Задача о выборе траектории методом динамического программирования Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|