Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.04.2015, 11:30
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
Вопрос Как из разных чисел получить определенное число?

Помогите хотя бы понять логику.
есть числа:
"1" в количестве n1 шт.
"2" в количестве n2 шт.
"5" в количестве n5 шт.
"6" в количестве n6 шт.
"10" в количестве n10 шт.
"15" в количестве n15 шт.
"20" в количестве n20 шт.
количество может быть равным 0, могут быть и другие "числа". Как узнать какие числа и в каком количестве из данных нужно сложить что бы получить определённое число, например 33.
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием
  #2  
Старый 20.04.2015, 11:59
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

32+1=33
31+2=33

1+32=33
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 20.04.2015, 12:13
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

Не совсем.
33=10+10+5+5+2+1
Вот мне и надо что бы результатом выполнения было, что из заданных чисел нужно, 2 по 10, 2 по 5, 1 по 2, 1 по 1. (к примеру)
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием
  #4  
Старый 20.04.2015, 16:57
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Как вариант. Ну или брутфорсить вычитанием.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 20.04.2015, 18:25
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

Цитата:
Сообщение от Bargest
Как вариант. Ну или брутфорсить вычитанием.
Спасибо, за наводку.
Я пол дня голову ломал, придумал алгоритм, вроде даже работает. Может статья поможет оптимизировать.
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием
  #6  
Старый 20.04.2015, 22:18
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
let solve s n m = (take n $ enumFrom 1) >>= \x -> (filter (\y -> ((length $ nub y) == x) && (sum y == s)) $ replicateM x m)

Prelude Data.List Control.Monad> solve 33 5 [1,2,5,6,10,15,20]

Результат:
Код:
[[1,2,10,20],[1,2,20,10],[1,10,2,20],[1,10,20,2],[1,20,2,10],[1,20,10,2],[2,1,10,20],[2,1,20,10],[2,5,6,20],[2,5,20,6],[2,6,5,20],[2,6,10,15],[2,6,15,10],[2,6,20,5],[2,10,1,20],[2,10,6,15],[2,10,15,6],[2,10,20,1],[2,15,6,10],[2,15,10,6],[2,20,1,10],[2,20,5,6],[2,20,6,5],[2,20,10,1],[5,2,6,20],[5,2,2
0,6],[5,6,2,20],[5,6,20,2],[5,20,2,6],[5,20,6,2],[6,2,5,20],[6,2,10,15],[6,2,15,10],[6,2,20,5],[6,5,2,20],[6,5,20,2],[6,10,2,15],[6,10,15,2],[6,15,2,10],[6,15,10,2],[6,20,2,5],[6,20,5,2],[10,1,2,20],[10,1,20,2],[10,2,1,20],[10,2,6,15],[10,2,15,6],[10,2,20,1],[10,6,2,15],[10,6,15,2],[10,15,2,6],[10,1
5,6,2],[10,20,1,2],[10,20,2,1],[15,2,6,10],[15,2,10,6],[15,6,2,10],[15,6,10,2],[15,10,2,6],[15,10,6,2],[20,1,2,10],[20,1,10,2],[20,2,1,10],[20,2,5,6],[20,2,6,5],[20,2,10,1],[20,5,2,6],[20,5,6,2],[20,6,2,5],[20,6,5,2],[20,10,1,2],[20,10,2,1],[1,2,5,10,15],[1,2,5,15,10],[1,2,10,5,15],[1,2,10,15,5],[1,
2,15,5,10],[1,2,15,10,5],[1,5,2,10,15],[1,5,2,15,10],[1,5,10,2,15],[1,5,10,15,2],[1,5,15,2,10],[1,5,15,10,2],[1,10,2,5,15],[1,10,2,15,5],[1,10,5,2,15],[1,10,5,15,2],[1,10,15,2,5],[1,10,15,5,2],[1,15,2,5,10],[1,15,2,10,5],[1,15,5,2,10],[1,15,5,10,2],[1,15,10,2,5],[1,15,10,5,2],[2,1,5,10,15],[2,1,5,15
,10],[2,1,10,5,15],[2,1,10,15,5],[2,1,15,5,10],[2,1,15,10,5],[2,5,1,10,15],[2,5,1,15,10],[2,5,10,1,15],[2,5,10,15,1],[2,5,15,1,10],[2,5,15,10,1],[2,10,1,5,15],[2,10,1,15,5],[2,10,5,1,15],[2,10,5,15,1],[2,10,15,1,5],[2,10,15,5,1],[2,15,1,5,10],[2,15,1,10,5],[2,15,5,1,10],[2,15,5,10,1],[2,15,10,1,5],[
2,15,10,5,1],[5,1,2,10,15],[5,1,2,15,10],[5,1,10,2,15],[5,1,10,15,2],[5,1,15,2,10],[5,1,15,10,2],[5,2,1,10,15],[5,2,1,15,10],[5,2,10,1,15],[5,2,10,15,1],[5,2,15,1,10],[5,2,15,10,1],[5,10,1,2,15],[5,10,1,15,2],[5,10,2,1,15],[5,10,2,15,1],[5,10,15,1,2],[5,10,15,2,1],[5,15,1,2,10],[5,15,1,10,2],[5,15,2
,1,10],[5,15,2,10,1],[5,15,10,1,2],[5,15,10,2,1],[10,1,2,5,15],[10,1,2,15,5],[10,1,5,2,15],[10,1,5,15,2],[10,1,15,2,5],[10,1,15,5,2],[10,2,1,5,15],[10,2,1,15,5],[10,2,5,1,15],[10,2,5,15,1],[10,2,15,1,5],[10,2,15,5,1],[10,5,1,2,15],[10,5,1,15,2],[10,5,2,1,15],[10,5,2,15,1],[10,5,15,1,2],[10,5,15,2,1]
,[10,15,1,2,5],[10,15,1,5,2],[10,15,2,1,5],[10,15,2,5,1],[10,15,5,1,2],[10,15,5,2,1],[15,1,2,5,10],[15,1,2,10,5],[15,1,5,2,10],[15,1,5,10,2],[15,1,10,2,5],[15,1,10,5,2],[15,2,1,5,10],[15,2,1,10,5],[15,2,5,1,10],[15,2,5,10,1],[15,2,10,1,5],[15,2,10,5,1],[15,5,1,2,10],[15,5,1,10,2],[15,5,2,1,10],[15,5
,2,10,1],[15,5,10,1,2],[15,5,10,2,1],[15,10,1,2,5],[15,10,1,5,2],[15,10,2,1,5],[15,10,2,5,1],[15,10,5,1,2],[15,10,5,2,1]]
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 21.04.2015 в 08:39.
Ответить с цитированием
  #7  
Старый 21.04.2015, 10:10
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
Восклицание

M.A.D.M.A.N., это, я так понимаю метод перебора что бы сумма цифр не превышала заданную. Но опять таки, все цифры используются только 1 раз,.. а по условию количество цифр одного номинала может быть больше чем одна.
Задача по сути аналогична "размену монет":
Требуется выдать сдачу в 24 гнубля, имеются монеты номиналом 1,5,7 гнублей.
Нужно получить варианты - как выдать требуемую сумму,..
Варианты:
1*24(шт.)
7*3(шт.)+1*3(шт.)
7*2(шт.)+5*2(шт.)
Но как я понял, получить универсальный алгоритм, который сможет выдать все возможные варианты, за приемлемое время - невозможно, т.к. если использовать алгоритмы вычитания и кратности, с проверкой на остаток, и т.д. и т.п. - Да, все они работают, но выдают в разных случаях, разные результаты. И этих алгоритмов я уже напридумывал с десяток, а если их смешивать между собой, - то время выполнения приближается к такому же, что дает тупой перебор и всё-равно некоторые варианты не находит. Тема конечно интересная, но 100% результат дает только тупой перебор.
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием
  #8  
Старый 21.04.2015, 10:15
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Убери «((length $ nub y) == x)» и будет использование чисел по несколько раз (это я под «задачу о рюкзаке» подвел).
Код:
Prelude Data.List Control.Monad> let solve s n m = (take n $ enumFrom 1) >>= \x -> (filter (\y -> sum y == s) $ replicateM x m)
Prelude Data.List Control.Monad> solve 33 5 [1,2,5,6,10,15,20]
[[1,2,10,20],[1,2,15,15],[1,2,20,10],[1,6,6,20],[1,6,20,6],[1,10,2,20],[1,10,20,2],[1,15,2,15],[1,15,15,2],[1,20,2,10],[1,20,6,6],[1,20,10,2],[2,1,10,20],[2,1,15,15],[2,1,20,10],[2,5,6,20],[2,5,20,6],[2,6,5,20],[2,6,10,15],[2,6,15,10],[2,6,20,5],[2,10,1,20],[2,10,6,15],[2,10,15,6],[2,10,20,1],[2,15,
1,15],[2,15,6,10],[2,15,10,6],[2,15,15,1],[2,20,1,10],[2,20,5,6],[2,20,6,5],[2,20,10,1],[5,2,6,20],[5,2,20,6],[5,6,2,20],[5,6,20,2],[5,20,2,6],[5,20,6,2],[6,1,6,20],[6,1,20,6],[6,2,5,20],[6,2,10,15],[6,2,15,10],[6,2,20,5],[6,5,2,20],[6,5,20,2],[6,6,1,20],[6,6,6,15],[6,6,15,6],[6,6,20,1],[6,10,2,15],
[6,10,15,2],[6,15,2,10],[6,15,6,6],[6,15,10,2],[6,20,1,6],[6,20,2,5],[6,20,5,2],[6,20,6,1],[10,1,2,20],[10,1,20,2],[10,2,1,20],[10,2,6,15],[10,2,15,6],[10,2,20,1],[10,6,2,15],[10,6,15,2],[10,15,2,6],[10,15,6,2],[10,20,1,2],[10,20,2,1],[15,1,2,15],[15,1,15,2],[15,2,1,15],[15,2,6,10],[15,2,10,6],[15,2
,15,1],[15,6,2,10],[15,6,6,6],[15,6,10,2],[15,10,2,6],[15,10,6,2],[15,15,1,2],[15,15,2,1],[20,1,2,10],[20,1,6,6],[20,1,10,2],[20,2,1,10],[20,2,5,6],[20,2,6,5],[20,2,10,1],[20,5,2,6],[20,5,6,2],[20,6,1,6],[20,6,2,5],[20,6,5,2],[20,6,6,1],[20,10,1,2],[20,10,2,1],[1,1,1,10,20],[1,1,1,15,15],[1,1,1,20,1
0],[1,1,5,6,20],[1,1,5,20,6],[1,1,6,5,20],[1,1,6,10,15],[1,1,6,15,10],[1,1,6,20,5],[1,1,10,1,20],[1,1,10,6,15],[1,1,10,15,6],[1,1,10,20,1],[1,1,15,1,15],[1,1,15,6,10],[1,1,15,10,6],[1,1,15,15,1],[1,1,20,1,10],[1,1,20,5,6],[1,1,20,6,5],[1,1,20,10,1],[1,2,5,5,20],[1,2,5,10,15],[1,2,5,15,10],[1,2,5,20,
5],[1,2,10,5,15],[1,2,10,10,10],[1,2,10,15,5],[1,2,15,5,10],[1,2,15,10,5],[1,2,20,5,5],[1,5,1,6,20],[1,5,1,20,6],[1,5,2,5,20],[1,5,2,10,15],[1,5,2,15,10],[1,5,2,20,5],[1,5,5,2,20],[1,5,5,20,2],[1,5,6,1,20],[1,5,6,6,15],[1,5,6,15,6],[1,5,6,20,1],[1,5,10,2,15],[1,5,10,15,2],[1,5,15,2,10],[1,5,15,6,6],
[1,5,15,10,2],[1,5,20,1,6],[1,5,20,2,5],[1,5,20,5,2],[1,5,20,6,1],[1,6,1,5,20],[1,6,1,10,15],[1,6,1,15,10],[1,6,1,20,5],[1,6,5,1,20],[1,6,5,6,15],[1,6,5,15,6],[1,6,5,20,1],[1,6,6,5,15],[1,6,6,10,10],[1,6,6,15,5],[1,6,10,1,15],[1,6,10,6,10],[1,6,10,10,6],[1,6,10,15,1],[1,6,15,1,10],[1,6,15,5,6],[1,6,
15,6,5],[1,6,15,10,1],[1,6,20,1,5],[1,6,20,5,1],[1,10,1,1,20],[1,10,1,6,15],[1,10,1,15,6],[1,10,1,20,1],[1,10,2,5,15],[1,10,2,10,10],[1,10,2,15,5],[1,10,5,2,15],[1,10,5,15,2],[1,10,6,1,15],[1,10,6,6,10],[1,10,6,10,6],[1,10,6,15,1],[1,10,10,2,10],[1,10,10,6,6],[1,10,10,10,2],[1,10,15,1,6],[1,10,15,2,
5],[1,10,15,5,2],[1,10,15,6,1],[1,10,20,1,1],[1,15,1,1,15],[1,15,1,6,10],[1,15,1,10,6],[1,15,1,15,1],[1,15,2,5,10],[1,15,2,10,5],[1,15,5,2,10],[1,15,5,6,6],[1,15,5,10,2],[1,15,6,1,10],[1,15,6,5,6],[1,15,6,6,5],[1,15,6,10,1],[1,15,10,1,6],[1,15,10,2,5],[1,15,10,5,2],[1,15,10,6,1],[1,15,15,1,1],[1,20,
1,1,10],[1,20,1,5,6],[1,20,1,6,5],[1,20,1,10,1],[1,20,2,5,5],[1,20,5,1,6],[1,20,5,2,5],[1,20,5,5,2],[1,20,5,6,1],[1,20,6,1,5],[1,20,6,5,1],[1,20,10,1,1],[2,1,5,5,20],[2,1,5,10,15],[2,1,5,15,10],[2,1,5,20,5],[2,1,10,5,15],[2,1,10,10,10],[2,1,10,15,5],[2,1,15,5,10],[2,1,15,10,5],[2,1,20,5,5],[2,5,1,5,
20],[2,5,1,10,15],[2,5,1,15,10],[2,5,1,20,5],[2,5,5,1,20],[2,5,5,6,15],[2,5,5,15,6],[2,5,5,20,1],[2,5,6,5,15],[2,5,6,10,10],[2,5,6,15,5],[2,5,10,1,15],[2,5,10,6,10],[2,5,10,10,6],[2,5,10,15,1],[2,5,15,1,10],[2,5,15,5,6],[2,5,15,6,5],[2,5,15,10,1],[2,5,20,1,5],[2,5,20,5,1],[2,6,5,5,15],[2,6,5,10,10],
[2,6,5,15,5],[2,6,10,5,10],[2,6,10,10,5],[2,6,15,5,5],[2,10,1,5,15],[2,10,1,10,10],[2,10,1,15,5],[2,10,5,1,15],[2,10,5,6,10],[2,10,5,10,6],[2,10,5,15,1],[2,10,6,5,10],[2,10,6,10,5],[2,10,10,1,10],[2,10,10,5,6],[2,10,10,6,5],[2,10,10,10,1],[2,10,15,1,5],[2,10,15,5,1],[2,15,1,5,10],[2,15,1,10,5],[2,15
,5,1,10],[2,15,5,5,6],[2,15,5,6,5],[2,15,5,10,1],[2,15,6,5,5],[2,15,10,1,5],[2,15,10,5,1],[2,20,1,5,5],[2,20,5,1,5],[2,20,5,5,1],[5,1,1,6,20],[5,1,1,20,6],[5,1,2,5,20],[5,1,2,10,15],[5,1,2,15,10],[5,1,2,20,5],[5,1,5,2,20],[5,1,5,20,2],[5,1,6,1,20],[5,1,6,6,15],[5,1,6,15,6],[5,1,6,20,1],[5,1,10,2,15]
,[5,1,10,15,2],[5,1,15,2,10],[5,1,15,6,6],[5,1,15,10,2],[5,1,20,1,6],[5,1,20,2,5],[5,1,20,5,2],[5,1,20,6,1],[5,2,1,5,20],[5,2,1,10,15],[5,2,1,15,10],[5,2,1,20,5],[5,2,5,1,20],[5,2,5,6,15],[5,2,5,15,6],[5,2,5,20,1],[5,2,6,5,15],[5,2,6,10,10],[5,2,6,15,5],[5,2,10,1,15],[5,2,10,6,10],[5,2,10,10,6],[5,2
,10,15,1],[5,2,15,1,10],[5,2,15,5,6],[5,2,15,6,5],[5,2,15,10,1],[5,2,20,1,5],[5,2,20,5,1],[5,5,1,2,20],[5,5,1,20,2],[5,5,2,1,20],[5,5,2,6,15],[5,5,2,15,6],[5,5,2,20,1],[5,5,6,2,15],[5,5,6,15,2],[5,5,15,2,6],[5,5,15,6,2],[5,5,20,1,2],[5,5,20,2,1],[5,6,1,1,20],[5,6,1,6,15],[5,6,1,15,6],[5,6,1,20,1],[5
,6,2,5,15],[5,6,2,10,10],[5,6,2,15,5],[5,6,5,2,15],[5,6,5,15,2],[5,6,6,1,15],[5,6,6,6,10],[5,6,6,10,6],[5,6,6,15,1],[5,6,10,2,10],[5,6,10,6,6],[5,6,10,10,2],[5,6,15,1,6],[5,6,15,2,5],[5,6,15,5,2],[5,6,15,6,1],[5,6,20,1,1],[5,10,1,2,15],[5,10,1,15,2],[5,10,2,1,15],[5,10,2,6,10],[5,10,2,10,6],[5,10,2,
15,1],[5,10,6,2,10],[5,10,6,6,6],[5,10,6,10,2],[5,10,10,2,6],[5,10,10,6,2],[5,10,15,1,2],[5,10,15,2,1],[5,15,1,2,10],[5,15,1,6,6],[5,15,1,10,2],[5,15,2,1,10],[5,15,2,5,6],[5,15,2,6,5],[5,15,2,10,1],[5,15,5,2,6],[5,15,5,6,2],[5,15,6,1,6],[5,15,6,2,5],[5,15,6,5,2],[5,15,6,6,1],[5,15,10,1,2],[5,15,10,2
,1],[5,20,1,1,6],[5,20,1,2,5],[5,20,1,5,2],[5,20,1,6,1],[5,20,2,1,5],[5,20,2,5,1],[5,20,5,1,2],[5,20,5,2,1],[5,20,6,1,1],[6,1,1,5,20],[6,1,1,10,15],[6,1,1,15,10],[6,1,1,20,5],[6,1,5,1,20],[6,1,5,6,15],[6,1,5,15,6],[6,1,5,20,1],[6,1,6,5,15],[6,1,6,10,10],[6,1,6,15,5],[6,1,10,1,15],[6,1,10,6,10],[6,1,
10,10,6],[6,1,10,15,1],[6,1,15,1,10],[6,1,15,5,6],[6,1,15,6,5],[6,1,15,10,1],[6,1,20,1,5],[6,1,20,5,1],[6,2,5,5,15],[6,2,5,10,10],[6,2,5,15,5],[6,2,10,5,10],[6,2,10,10,5],[6,2,15,5,5],[6,5,1,1,20],[6,5,1,6,15],[6,5,1,15,6],[6,5,1,20,1],[6,5,2,5,15],[6,5,2,10,10],[6,5,2,15,5],[6,5,5,2,15],[6,5,5,15,2
],[6,5,6,1,15],[6,5,6,6,10],[6,5,6,10,6],[6,5,6,15,1],[6,5,10,2,10],[6,5,10,6,6],[6,5,10,10,2],[6,5,15,1,6],[6,5,15,2,5],[6,5,15,5,2],[6,5,15,6,1],[6,5,20,1,1],[6,6,1,5,15],[6,6,1,10,10],[6,6,1,15,5],[6,6,5,1,15],[6,6,5,6,10],[6,6,5,10,6],[6,6,5,15,1],[6,6,6,5,10],[6,6,6,10,5],[6,6,10,1,10],[6,6,10,
5,6],[6,6,10,6,5],[6,6,10,10,1],[6,6,15,1,5],[6,6,15,5,1],[6,10,1,1,15],[6,10,1,6,10],[6,10,1,10,6],[6,10,1,15,1],[6,10,2,5,10],[6,10,2,10,5],[6,10,5,2,10],[6,10,5,6,6],[6,10,5,10,2],[6,10,6,1,10],[6,10,6,5,6],[6,10,6,6,5],[6,10,6,10,1],[6,10,10,1,6],[6,10,10,2,5],[6,10,10,5,2],[6,10,10,6,1],[6,10,1
5,1,1],[6,15,1,1,10],[6,15,1,5,6],[6,15,1,6,5],[6,15,1,10,1],[6,15,2,5,5],[6,15,5,1,6],[6,15,5,2,5],[6,15,5,5,2],[6,15,5,6,1],[6,15,6,1,5],[6,15,6,5,1],[6,15,10,1,1],[6,20,1,1,5],[6,20,1,5,1],[6,20,5,1,1],[10,1,1,1,20],[10,1,1,6,15],[10,1,1,15,6],[10,1,1,20,1],[10,1,2,5,15],[10,1,2,10,10],[10,1,2,15
,5],[10,1,5,2,15],[10,1,5,15,2],[10,1,6,1,15],[10,1,6,6,10],[10,1,6,10,6],[10,1,6,15,1],[10,1,10,2,10],[10,1,10,6,6],[10,1,10,10,2],[10,1,15,1,6],[10,1,15,2,5],[10,1,15,5,2],[10,1,15,6,1],[10,1,20,1,1],[10,2,1,5,15],[10,2,1,10,10],[10,2,1,15,5],[10,2,5,1,15],[10,2,5,6,10],[10,2,5,10,6],[10,2,5,15,1]
,[10,2,6,5,10],[10,2,6,10,5],[10,2,10,1,10],[10,2,10,5,6],[10,2,10,6,5],[10,2,10,10,1],[10,2,15,1,5],[10,2,15,5,1],[10,5,1,2,15],[10,5,1,15,2],[10,5,2,1,15],[10,5,2,6,10],[10,5,2,10,6],[10,5,2,15,1],[10,5,6,2,10],[10,5,6,6,6],[10,5,6,10,2],[10,5,10,2,6],[10,5,10,6,2],[10,5,15,1,2],[10,5,15,2,1],[10,
6,1,1,15],[10,6,1,6,10],[10,6,1,10,6],[10,6,1,15,1],[10,6,2,5,10],[10,6,2,10,5],[10,6,5,2,10],[10,6,5,6,6],[10,6,5,10,2],[10,6,6,1,10],[10,6,6,5,6],[10,6,6,6,5],[10,6,6,10,1],[10,6,10,1,6],[10,6,10,2,5],[10,6,10,5,2],[10,6,10,6,1],[10,6,15,1,1],[10,10,1,2,10],[10,10,1,6,6],[10,10,1,10,2],[10,10,2,1,
10],[10,10,2,5,6],[10,10,2,6,5],[10,10,2,10,1],[10,10,5,2,6],[10,10,5,6,2],[10,10,6,1,6],[10,10,6,2,5],[10,10,6,5,2],[10,10,6,6,1],[10,10,10,1,2],[10,10,10,2,1],[10,15,1,1,6],[10,15,1,2,5],[10,15,1,5,2],[10,15,1,6,1],[10,15,2,1,5],[10,15,2,5,1],[10,15,5,1,2],[10,15,5,2,1],[10,15,6,1,1],[10,20,1,1,1]
,[15,1,1,1,15],[15,1,1,6,10],[15,1,1,10,6],[15,1,1,15,1],[15,1,2,5,10],[15,1,2,10,5],[15,1,5,2,10],[15,1,5,6,6],[15,1,5,10,2],[15,1,6,1,10],[15,1,6,5,6],[15,1,6,6,5],[15,1,6,10,1],[15,1,10,1,6],[15,1,10,2,5],[15,1,10,5,2],[15,1,10,6,1],[15,1,15,1,1],[15,2,1,5,10],[15,2,1,10,5],[15,2,5,1,10],[15,2,5,
5,6],[15,2,5,6,5],[15,2,5,10,1],[15,2,6,5,5],[15,2,10,1,5],[15,2,10,5,1],[15,5,1,2,10],[15,5,1,6,6],[15,5,1,10,2],[15,5,2,1,10],[15,5,2,5,6],[15,5,2,6,5],[15,5,2,10,1],[15,5,5,2,6],[15,5,5,6,2],[15,5,6,1,6],[15,5,6,2,5],[15,5,6,5,2],[15,5,6,6,1],[15,5,10,1,2],[15,5,10,2,1],[15,6,1,1,10],[15,6,1,5,6]
,[15,6,1,6,5],[15,6,1,10,1],[15,6,2,5,5],[15,6,5,1,6],[15,6,5,2,5],[15,6,5,5,2],[15,6,5,6,1],[15,6,6,1,5],[15,6,6,5,1],[15,6,10,1,1],[15,10,1,1,6],[15,10,1,2,5],[15,10,1,5,2],[15,10,1,6,1],[15,10,2,1,5],[15,10,2,5,1],[15,10,5,1,2],[15,10,5,2,1],[15,10,6,1,1],[15,15,1,1,1],[20,1,1,1,10],[20,1,1,5,6],
[20,1,1,6,5],[20,1,1,10,1],[20,1,2,5,5],[20,1,5,1,6],[20,1,5,2,5],[20,1,5,5,2],[20,1,5,6,1],[20,1,6,1,5],[20,1,6,5,1],[20,1,10,1,1],[20,2,1,5,5],[20,2,5,1,5],[20,2,5,5,1],[20,5,1,1,6],[20,5,1,2,5],[20,5,1,5,2],[20,5,1,6,1],[20,5,2,1,5],[20,5,2,5,1],[20,5,5,1,2],[20,5,5,2,1],[20,5,6,1,1],[20,6,1,1,5]
,[20,6,1,5,1],[20,6,5,1,1],[20,10,1,1,1]]
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #9  
Старый 21.04.2015, 14:16
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

Нашёл на просторах
Код:
const
  Coins: array[0..2] of Integer = (1,5,7);

procedure Razmen(Sum, StartingCoinIndex: Integer; s: string);
begin
  if Sum = 0 then
    Writeln(S)
  else
    while (Coins[StartingCoinIndex] <= Sum) and (StartingCoinIndex<=High(Coins)) do begin
      Razmen(Sum - Coins[StartingCoinIndex], StartingCoinIndex, s + IntToStr(Coins[StartingCoinIndex]) + ' ');
      Inc(StartingCoinIndex);
    end;
end;
...
Begin
Razmen(24, 0, '');

Тупо всё варианты тоже перебирает, без учета глубины вложения.
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием
  #10  
Старый 23.04.2015, 15:56
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Цитата:
Сообщение от SCrat.ORS
И этих алгоритмов я уже напридумывал с десяток, а если их смешивать между собой, - то время выполнения приближается к такому же, что дает тупой перебор и всё-равно некоторые варианты не находит. Тема конечно интересная, но 100% результат дает только тупой перебор.
Зачем вам что-то придумывать, когда задача о рюкзаке решена математиками? Применяете метод ветвей и границ.
Ответить с цитированием
  #11  
Старый 23.04.2015, 19:42
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

AlexSku, там не совсем то что нужно
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter