[Ответить в тред] Ответить в тред

16/08/16 - Запущен Двач Трекер
01/08/16 - Вернули возможность создавать юзердоски
09/07/16 - Новое API для капчи - внимание разработчикам приложений



Новые доски: /obr/ - Offline Battle Rap • /hv/ - Халява в интернете • /2d/ - Аниме/Беседка • /char/ - Сетевые персонажи • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 6 | 1 | 3
Назад Вниз Каталог Обновить

Программирование уровня **EBANUY V ROT** Аноним 28/07/16 Чтв 20:19:47  807619  
14697263871860.jpg (34Кб, 604x403)
Программач, я ведь знаю тут собрана самая мозговитая прослойка двача. Мне нужна помощь в решении следующего алгоритма.
Задачка не из легких. Уже два дня потею, вот вот вроде выведу норм алгоритм,но нифига. Я уже и рекурсией, и мат. формулы искал.
Ближе к делу.

Необходимо подсчитать число разбиений (N) на слагаемые, для вводимого нами числа (Sum), при том, что у нас есть список доступных слагаемых (Arr).

Пример: мы вводим число 7, и задаем слагаемые - [1,2,5]. Из этих условий следует, что Sum = 7; Arr = [1,2,5], а количество разбиений N нам нужно вычислить:
1) {5,2};
2) {5,1,1};
3) {2,2,2,1};
4) {2,2,1,1,1};
5) {2,1,1,1,1,1};
6) {1,1,1,1,1,1,1};
В нашем случае N = 6;
Важный момент - слагаемые могут повторяться, но их последовательность не важна, то есть разбиения типа {5,2} и {2,5} тождественны между собой и должны учитываться как одно решение

Ребят, помогите плз. Упарывание всяких там формул Эйлера и т.д. не помогло в силу отсутствия решения для конкретно подобного случая
Аноним 28/07/16 Чтв 20:26:56  807627
бампец
Аноним 28/07/16 Чтв 20:29:50  807630
>>807619 (OP)
лалка, смотри в сторону деревьев для постороения всех множеств. Потом сделаешь обход и отрежешь симметричные ветви. Потом РАСПЕЧАТАЕШЬ решение.
Аноним 28/07/16 Чтв 20:32:14  807631
>>807630
Просто найдется ли деревом вариант например такой вариант. Если делители 10,25,50, а чтсло = 50. То нисходящим деревом, мы проскочим комбинацию {10,10,10,10,10}. Так ведь?
Аноним 28/07/16 Чтв 20:39:49  807637
>>807631
Не пропустишь, если на каждом шаге построения ветви будешь создавать листы которые включают в себя все слагаемые, для которых общая сумма но корня будет меньше твоего ЧИСЛА. То есть построение типа (сокращенный вариант):

10>25>10>тупик
10>10>25>тупик
10>10>10>10>10 (помечаем лист как УСПЕШНЫЙ, так как он соответствует ЙОБА-условию)
Аноним 28/07/16 Чтв 21:58:09  807713
>>807631
Если, не осилил таки, держи спойлер

http://ideone.com/QNgNFQ

Аноним 29/07/16 Птн 00:35:05  807919
>>807619 (OP)
Это же блять задача на размен сдачи. Такое на курсере в курсе по скале дают на первой же неделе. Через рекурсию решается элементарно.
https://habrahabr.ru/post/109384/
http://dxdy.ru/topic10235.html

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 6 | 1 | 3
Назад Вверх Каталог Обновить

Топ тредов
Избранное