Форум по 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.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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