|
4 / 4 / 0
Регистрация: 03.12.2015
Сообщений: 22
|
|||||||||||
Алгоритмы с возвратом. Задача о весах02.10.2016, 17:08. Показов 6483. Ответов 2
Метки нет (Все метки)
Здравствуйте, попытался разобраться с данной задачкой на с++, но ничего не получилось. Нашел в интернете ее на как я понял паскале, но т.к. я его знаю мягко сказать не очень ничего дельного не получилось. Вот сама задача, код на паскале и то что я попытался сделать на с++. Ошибка скорее всего в циклах for и скорее всего не верно возвращаю значение. Пожалуйста помогите.
УСЛОВИЕ. Имеется разновес, причем гиря определенного веса может быть представлена в нескольких экземплярах. ВОПРОС. Набрать заданный вес всеми возможными способами с точностью до перестановки гирь. ПРИМЕР. Разновес: 8, 7, 3, 2, 2, 1, 1, 1. Набрать вес: 10кг. Разновес удобно хранить в массиве KRATN[1..N], где N – вес самой тяжелой гири и KRATN[g] – количество экземпляров гири веса g. Решение (набор веса) будем хранить в массиве SOL[1..N], где SOL[g] – количество экземпляров гири веса g в данном наборе. Применим обычную схему алгоритма с возвратом. Пусть V – текущий вес, который нужно набрать. Чтобы набрать этот вес, будем перебирать гири разновеса до тех пор, пока не встретим допустимую. Условие допустимости: Гиря g – допустима, если она имеется в разновесе, то есть KRATN[g]>0 и ее вес не превышает набираемого веса V, т.е. g≤V. Пусть такая g найдена, удалим ее из разновеса, то есть KRATN[g]=KRATN[g]-1 и добавим к решению, то есть SOL[g]=SOL[g]+1. Новый текущий набираемый вес V1=V-g. Затем вызываем рекурсию для уменьшенного веса. Возврат: Если допустимой гири в разновесе нет или найдено решение, то последнюю добавленную гирю удаляем из решения и добавляем в разновес. KRATN[g]=KRATN[g]+1; SOL[g]=SOL[g]-1; V=V1+g – текущий набираемый вес. Затем возвращаемся на цикл перебора гирь разновеса и вместо гири g берем гирю g-1. При такой схеме алгоритм будет генерировать повторяющиеся решения. Например, вес 10 будет набран как 2+8 и 8+2. Чтобы избавиться от повторов, будем генерировать решения в антиалфавитном порядке. Это означает следующее. После того, как к решению была добавлена гиря веса g разрешено брать гири веса меньшего либо равного g. Таким образом, будет сгенерировано только решение 8+2. Алгоритм {задача о весах} Данные: разновес, представленный массивом KRATN[1…Ves], Ves – набираемый целый положительный вес. Результат: печать наборов веса Ves без перестановок гирь. Переменные: Ves, KRATN, SOL – глобальные.
То, что я попытался сделать.
0
|
|||||||||||
| 02.10.2016, 17:08 | |
|
Ответы с готовыми решениями:
2
Алгоритмы с возвратом |
|
601 / 293 / 178
Регистрация: 06.06.2016
Сообщений: 552
|
||||||
| 02.10.2016, 23:35 | ||||||
|
По смыслу кода на Pascale разновес 8, 7, 3, 2, 2, 1, 1, 1 нужно представить массивом { 0, 3, 2, 1, 0, 0, 0, 1, 1 } ( 3 гири по 1кг,
2 гири по 2 кг, 1 -- по 3 кг и т.д, нумерация идет с нуля)
0
|
||||||
|
2 / 2 / 0
Регистрация: 09.06.2021
Сообщений: 3
|
|||||||||||
| 26.06.2021, 21:38 | |||||||||||
|
Просто оставлю это здесь может кому пригодится когда.
0
|
|||||||||||
| 26.06.2021, 21:38 | |
|
Помогаю со студенческими работами здесь
3
Функция с возвратом указателя и возвратом ссылки Задача коммивояжёра с возвратом в "магазин"
Задача на алгоритмы ветвления Разветвляющиеся алгоритмы - Задача о смесях Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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. Пошагово создадим проект для загрузки изображения. . .
|