powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Найти все возможные комбинации
15 сообщений из 15, страница 1 из 1
Найти все возможные комбинации
    #37548350
crash-msch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.
Задача такова:
Есть определённая сумма, например 1000. И есть определенные числа, которые вводятся пользователем.
Нужно вывести все возможные комбинации сумм этих чисел, чтобы равнялись 1000. Числа повторяться не могут. Все числа больше нуля.
Помогите, кто соображает.
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37548356
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
несложно, а цель какая?
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37548402
crash-msch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Цель:
1. бухгалтера часто подгоняют циферки под нужную сумму.
2. Вторая цель моя личная: я хотел написать рекурсию, из которой постоянно вычиталось число из суммы и т.д., если равно нулю то норм, а если <0, то нужно удалить одно число из ряда и дальше (у меня не получилось реализовать свой алгоритм). Хочу узнать верный алгоритм.
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37548624
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно задачу решают либо методом ветвей и границ, либо методами динамического программирования.
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37548649
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crash-mschЦель:
1. бухгалтера часто подгоняют циферки под нужную сумму.
2. Вторая цель моя личная: я хотел написать рекурсию, из которой постоянно вычиталось число из суммы и т.д., если равно нулю то норм, а если <0, то нужно удалить одно число из ряда и дальше (у меня не получилось реализовать свой алгоритм). Хочу узнать верный алгоритм.Читай учебники/методички/рефераты на тему "Задача о рюкзаке" или "Knapsack problem". Даже в Википедии есть приличные решения.
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37548776
Фотография alex77755
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторбухгалтера часто подгоняют циферки под нужную сумму
Кто бы сомневался!!
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37549892
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crash-msch.... И есть определенные числа, которые вводятся пользователем.

Количество чисел фиксировано?
Или определяется заранее?
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37550976
crash-msch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сами числа определённые, естественно и количество определённое.

суть в том что есть платёжки.

13024
14027
72303
....



и есть сумма расхода к примеру 100000.

нужно подгадать под эту сумму.
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37551049
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так навскидку (возможно дилетантский подход, я долго не думал):
Определяете наибольший платеж, который меньше заданной суммы затем, вычитаете платеж из суммы и проверяете равенство нулю остатка, если не ноль, то с остатком делаете вышеописанную операцию.
Для реализации метода я бы использовал рекордсет + колекцию
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37551050
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А забыл уточнить, если остаток – платеж <0 то данный платеж для этого ряда не подходит
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37551063
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TpaBkaТак навскидку
Это жадный алгоритм, и он редко даёт оптимум. Особенно когда элементы одного порядка с целевой суммой.
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37551099
crash-msch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TpaBkaТак навскидку (возможно дилетантский подход, я долго не думал):
Определяете наибольший платеж, который меньше заданной суммы затем, вычитаете платеж из суммы и проверяете равенство нулю остатка, если не ноль, то с остатком делаете вышеописанную операцию.
Для реализации метода я бы использовал рекордсет + колекцию

Пробовал примерно также.
Если не получилось, то удалять первый элемент и пробовать заново?
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37551149
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crash-mschПробовал примерно также.
Если не получилось, то удалять первый элемент и пробовать заново? теперь и ты познал рекурсию :)
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37552230
Below273
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crash-msch,

в своей проге я делал чуток по-другому. не заморачивался насчёт больше меньше, перебирал все элементы. сначала все числа, потом суммы из всех возможных комбинаций сумм двух чисел, трёх, и тд. кажется, что мудрённо, но комп монстр, выполнит всё за доли секунд
...
Рейтинг: 0 / 0
Найти все возможные комбинации
    #37552362
crash-msch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я помню мы проходили в политехе метод ветвей и границ, но что-то я его мимо прошёл ))
Сделал рекурсией. Правда в Delphi.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Найти все возможные комбинации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]